使用截断的时区信息解析Java日期

时间:2012-10-18 09:54:15

标签: java regex date date-format simpledateformat

考虑以下日期字符串

  • 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

1 个答案:

答案 0 :(得分:2)

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

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

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