我尝试了很多方法,但我总是没有解决方案。我需要的是一个javascript代码,它可以将时间从div.postedOn
从12h转换为24h格式。
div.postedTime示例:
<div class="postedOn"><img src="http://assets7.thatsite.com/images/forums/post/reply.gif?v3" alt=""> Posted on June 3, 2012 1:46 AM</div>
所以,我需要将'1:46 PM'转换为'01:46'而不从<div>
删除任何内容。
答案 0 :(得分:4)
如果格式始终相同,那么这将正常工作:
out = in.replace(/(\d+):(\d+) ([AP])M/,function(m) {
m[1] = m[1]%12;
if( m[3] == "P") m[1] += 12;
if( m[1] < 10) m[1] = "0"+m[1];
return m[1]+":"+m[2];
});
答案 1 :(得分:1)
与Kolink类似,添加另一个正则表达式解决方案......
var str = "Posted on June 3, 2012 2:00 PM";
var regex = /([01]?\d)(:\d{2}) (AM|PM)/g;
var match = regex.exec(str);
str.replace(regex, (+match[1] + (match[3]=='AM'? 0 : 12)) + match[2] + match[3]);
答案 2 :(得分:0)
我不是百分百肯定,因为我有一段时间没有完成javascript,但你会做这样的事情.. (这是pseuedo btw)
if( timeString.contains("pm") ) {
hour += 12%24;
}
我不是百分之百确定这是否有效,但这是基本的想法。我希望我能帮忙。
答案 3 :(得分:0)
var str = "12:00 AM";
var regex = /([01]?\d)(:\d{2}) (a.m.|p.m.|AM|PM)/g;
var match = regex.exec(str);
var test;
if (match[1] == 12 && (match[3] == 'p.m.' || match[3] == 'PM')) {
test = '12 h';
} else if (match[1] == 12 && (match[3] == 'a.m.' || match[3] == 'AM')) {
test = '0 h';
} else {
test = str.replace(regex, (+match[1] + (match[3]=='a.m.'? 0 : 12)) + ' h');
}
console.log(test);
这对于抓住那些讨厌的“上午12点”和“下午12点”的情况会有用吗?