考虑以下日期字符串
2012-10-01 01:02:03.004+0500
使用以下SimpleDateFormat
模式在Java中识别:
yyyy-MM-dd HH:mm:ss.SSSZ
但是,如果上面的时区信息被截断为2位数,即
2012-10-01 01:02:03.004+05
日期字符串不符合任何有效格式,因此没有SimpleDateFormat
模式可用于正确解析它。
是否有正确解析截断时区的解决方法没有字符串预处理?
如果不是,对于大数这样的日期字符串在1轮中进行预处理,哪个正则表达式是最佳的,例如使用replaceFirst()
调用,如此similar question?
答案 0 :(得分:2)
我不知道没有字符串预处理的好解决方案,但如果replaceFirst
可以接受,则可以使用此代码段:
dateStr.replaceFirst("(?<=[+-]\\d\\d)$", "00")
此代码将两个零附加到以<plus|minus><digit><digit>
(link to ideone)结尾的字符串。