1

我尝试了很多方法,但我总是没有解决方案。我需要的是一个 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

4 回答 4

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];
});
于 2012-06-03T23:24:19.380 回答
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]);
于 2012-06-03T23:34:16.837 回答
0

我不是 100% 确定,因为我有一段时间没有做过 javascript,但你会做这样的事情..(这是伪 btw)

if( timeString.contains("pm") ) {
hour += 12%24;
}

我不是 100% 确定这是否可行,但这仍然是基本思想。我希望我有所帮助。

于 2012-06-03T23:23:12.143 回答
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 AM”和“12 PM”情况,这会起作用吗?

于 2013-03-10T22:49:23.447 回答