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

标签 java regex date date-format simpledateformat

考虑以下日期字符串

  • 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/

相关文章:

java - Android应用程序设计帮助,如何控制显示哪个 Activity

javascript - 用于验证整数或带两位小数的 float 的正则表达式

java - 将 UTC 日期转换为不同时区的日期

java - Tic Tac Toe 游戏 - 数组没有保存值(value)?

java - 从 Activity 外的类(class)发起 Intent

java - 如何将数据从 Activity 传递到 BroadcastReceiver?

java - 正则表达式不匹配空字符串

java - 构建正则表达式来捕获单词

php日期格式不在数据库中插入时间

java - Java 中日历的字符串时间戳?