【问题标题】:Java Unparseable date: America/Chicago TimezoneJava 无法解析的日期:美国/芝加哥时区
【发布时间】:2012-05-18 19:45:41
【问题描述】:

我的应用程序尝试解析美国/芝加哥时区的日期时遇到问题。我已经查看了一堆其他 ParseException 问题,并且我认为我已经了解了 Java 中日期解析的所有常见问题。以下代码适用于我遇到的所有其他日期/时间,但由于某种原因,美国/芝加哥时区的所有日期都无法解析。

我为 dateFormat 设置了语言环境,这并不重要。我检查了其他每个部分是否正常,我删除了不可见的控制字符,我重新输入了字符串以确保没有恶意字符被复制/粘贴,但每次都会抛出异常。

有什么想法吗?

dateFormat = new SimpleDateFormat("EEE MMM dd k:mm:ss zzz ");
dateString = "Wed May 02 15:45:47 America/Chicago ";

try {
    entry.setDateTaken(dateFormat.parse(dateString));
}  catch (java.text.ParseException e) { }

我不想走 Joda 路线是有原因的,这是一件很简单的事情,我不应该这样做。

【问题讨论】:

    标签: java parsing date


    【解决方案1】:

    相信问题在于您使用的是 Olson 时区 ID,我不认为SimpleDateFormat 支持解析这些。当然,使用你的代码我对“欧洲/伦敦”有同样的问题,所以它不是芝加哥特有的。你能举出任何确实工作的时区标识符风格的例子吗?

    【讨论】:

    • 是的,当我使用其他 TimeZone 名称时,它也会中断。因此,在 SimpleDateFormat 中,当文档谈到带名称的时区时,它指的是(例如)“太平洋标准时间”,而不是 TimeZone 中的时区?感谢您帮助我实现这一点!
    猜你喜欢
    • 2017-03-07
    • 2015-02-02
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-30
    • 1970-01-01
    相关资源
    最近更新 更多