3

考虑以下日期字符串

  • 2012-10-01 01:02:03.004+0500

这在 Java 中使用以下SimpleDateFormat模式识别:

  • yyyy-MM-dd HH:mm:ss.SSSZ

但是,如果上面的时区信息被截断为 2 位数字,即像

  • 2012-10-01 01:02:03.004+05

日期字符串不符合任何有效格式,因此没有SimpleDateFormat可用于正确解析它的模式。

是否有任何解决方法可以在不进行字符串预处理的情况下正确解析截断的时区?

如果不是,哪个正则表达式最适合在 1 轮中对大量此类日期字符串进行预处理,例如使用调用,如在这个类似的问题中?replaceFirst()

4

1 回答 1

2

我不知道没有字符串预处理的好解决方案,但如果replaceFirst可以接受,您可以使用以下代码片段:

dateStr.replaceFirst("(?<=[+-]\\d\\d)$", "00")

此代码将两个零附加到以<plus|minus><digit><digit>(链接到 ideone ) 结尾的字符串。

于 2012-10-18T10:02:27.990 回答