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

JavaScript-将时间从12小时转换为24小时格式,javascript,time,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:

我尝试了很多方法,但最终总是没有解决办法。我需要的是一个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>
发布于2012年6月3日凌晨1:46

因此,我需要将'1:46 PM'转换为'01:46',而不删除

中的任何内容。我不是100%确定,因为我已经有一段时间没有使用javascript了,但您可以这样做。。 (这里是pseuedo btw)


我不是100%确定这是否有效,但这仍然是基本的想法。我希望我能帮上忙。

我不是100%确定,因为我已经有一段时间没有使用javascript了,但是你会这样做。。 (这里是pseuedo btw)


我不是100%确定这是否有效,但这仍然是基本的想法。我希望我能帮上忙。

如果格式始终相同,那么这将很好:

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];
});
out=in.replace(/(\d+):(\d+)([AP])M/,函数(M){
m[1]=m[1]%12;
如果(m[3]==“P”)m[1]+=12;
如果(m[1]<10)m[1]=“0”+m[1];
返回m[1]+“:”+m[2];
});

如果格式始终相同,则这将正常工作:

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];
});
out=in.replace(/(\d+):(\d+)([AP])M/,函数(M){
m[1]=m[1]%12;
如果(m[3]==“P”)m[1]+=12;
如果(m[1]<10)m[1]=“0”+m[1];
返回m[1]+“:”+m[2];
});

与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]);

与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]);
对于那些令人讨厌的“上午12点”和“下午12点”的情况,这是否有效



对于那些讨厌的“上午12点”和“下午12点”的情况,这种方法有效吗?

24小时?还是添加前导0?1PM是1300我建议将时间包装在它自己的元素中(例如
span
),这样可以更容易地抓取时间,而不必在格式化/调整它之前执行正则表达式(或任何其他字符串操作)来找到它。用回调函数替换一个简单的正则表达式可以提供基本功能,但老实说,当你在编辑一个论坛软件时,如果你只是在页面/模板中回显之前正确地格式化日期,那会容易得多。或者您想用JS添加特定于用户的个性化设置?即使在这种情况下,服务器端也是一个不错的选择。@Jo
中的文本实际上是
1:46 AM
,所以这大概是01:46。请参阅。还有,读一下,还有。24小时?还是添加前导0?1PM是1300我建议将时间包装在它自己的元素中(例如
span
),这样可以更容易地抓取时间,而不必在格式化/调整它之前执行正则表达式(或任何其他字符串操作)来找到它。用回调函数替换一个简单的正则表达式可以提供基本功能,但老实说,当你在编辑一个论坛软件时,如果你只是在页面/模板中回显之前正确地格式化日期,那会容易得多。或者您想用JS添加特定于用户的个性化设置?即使在这种情况下,服务器端也是一个不错的选择。@Jo
中的文本实际上是
1:46 AM
,所以这大概是01:46。请参阅。另外,请阅读和。
12%24
始终等于12,因此基本上您只需添加12小时。如果是凌晨12点呢?按照你的逻辑,那就是中午。正如我所说,这是关于如何做的基本想法,所以如果是下午3点,那么新的时间将是15点,如果是上午12点,那么12点将不会被添加。它将停留在1200点,直到下午1点,然后再更改为1300@Kolink上午12点不包含“下午”:)此代码唯一不起作用的情况是在下午12点到下午1点之间
12%24
始终等于12,因此基本上只需增加12小时。如果是凌晨12点呢?按照你的逻辑,那就是中午。正如我所说,这是关于如何做的基本想法,所以如果是下午3点,那么新的时间将是15点,如果是上午12点,那么12点将不会被添加。它将停留在1200点,直到下午1点,然后再更改为1300@Kolink上午12点不包含“下午”:)这个代码唯一不起作用的情况是在下午12点到下午1点之间,这让我很困惑。你能简单地解释一下如何使用它吗?基本上,它看起来有一小时、一分钟和一个经线。然后将
12
转换为
0
(因为上午12点是午夜),如果是下午12点,则加上12。然后,如果小时数小于10,它会加上一个前导零,最后返回结果。这看起来让我很困惑。你能简单地解释一下如何使用它吗?基本上,它看起来有一小时、一分钟和一个经线。然后将
12
转换为
0
(因为上午12点是午夜),如果是下午12点,则加上12。然后,如果小时数小于10,则添加一个前导零,最后返回结果。这一个有效!谢谢我很乐意为你们俩竖起大拇指,但我做不到。我的声誉很低。除了这不包括12:00上午和下午。这一个有效!谢谢我很乐意为你们俩竖起大拇指,但我做不到。我的名声不好。除了这不包括上午12点和下午12点。