正则表达式需要解析日期/时间字符串

时间:2010-01-11 16:32:51

标签: regex datetime

有人可以为我提供以下的正则表达式吗? (使用Javascript)

源字符串:Jan 2 2010 6:00PM

我希望结果字符串只显示时间,如下所示。 (上面使用的例子)

结果字符串:6:00 PM

5 个答案:

答案 0 :(得分:6)

(\d{1,2}:\d{1,2})([AP]M)替换为\1 \2

更新:如果源字符串保证为\d{2}格式,请使用\d{1,2}代替HH:MM

答案 1 :(得分:1)

在正则表达式中实现SilentGhost的注释:/([^ ]+)([^ ]{2})$/

这将匹配最后一个以空格分隔的“单词”,第1组中的第一位和第2组中的最后两个字符。转换为字符串操作应该是直接的。

如果需要,您还可以将(..)替换为[AP]M或类似内容,如果构建正则表达式以防止类似blah blah haha-I-gave-garbage-inputPM之类的内容,则可能会从一小部分验证中受益,但是无论如何,有很多方法可以处理垃圾。

答案 2 :(得分:0)

您可以使用格式为SimpleDateFormat的{​​{1}}。然后你可以得到时间部分。

答案 3 :(得分:0)

虽然我没看过,但我相信你能在Regex Library网站上找到适合你的东西。但是我碰巧同意SilentGhost,因为分割字符串可能更容易。只需确保所有DateTime都采用相同的格式。

答案 4 :(得分:0)

如果您需要将其转换为日期对象,并且如果您在Web浏览器中使用Javascript,则可能需要这样:

new Date('Jan 2 2010 6:00PM'.replace(/(?=[AP]M)/i, ' '));
// Sat Jan 02 2010 18:00:00 GMT-0600 (Central Standard Time)

new Date('Jan 2 2010 6:00PM'.replace(/(?=[AP]M)/i, ' ')).toUTCString();
// Sun, 03 Jan 2010 00:00:00 GMT

Mozilla在Javascript Date object上有参考文档。