考虑以下日期字符串
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
模式。
是否有任何解决方法可以无需字符串预处理来正确解析截断的时区?
如果不是,哪个正则表达式最适合大量这样的日期字符串在一轮中进行预处理,例如使用 replaceFirst()
调用,如 similar question ?
最佳答案
我不知道没有字符串预处理的好的解决方案,但如果 replaceFirst
是可以接受的,您可以使用此代码段:
dateStr.replaceFirst("(?<=[+-]\\d\\d)$", "00")
此代码将两个零附加到以 <plus|minus><digit><digit>
结尾的字符串(link to ideone)。
关于java - 使用截断的时区信息解析 Java 日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12951875/