JavaScript - 将时间从12h转换为24h格式

时间:2012-06-03 23:16:39

标签: javascript time

我尝试了很多方法,但我总是没有解决方案。我需要的是一个javascript代码,它可以将时间从div.postedOn从12h转换为24h格式。

div.postedTime示例:

<div class="postedOn"><img src="http://assets7.thatsite.com/images/forums/post/reply.gif?v3" alt="">&nbsp;&nbsp;Posted on June 3, 2012 1:46 AM</div>

所以,我需要将'1:46 PM'转换为'01:46'而不从<div>删除任何内容。

4 个答案:

答案 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点”的情况会有用吗?