【问题标题】:Parsing a String with a GMT timezone to Date using SimpleDateFormat使用 SimpleDateFormat 将带有 GMT 时区的字符串解析为 Date
【发布时间】:2011-07-15 09:41:30
【问题描述】:

我在从以下格式的输入字符串中解析日期时遇到问题:

String input = "Fri Jul 15 12:00:00 GMT+300 2011";
String dateFormat  = "EEE MMM d HH:mm:ss z yyyy";
Date date = new SimpleDateFormat(dateFormat).parse(input);

抛出异常:

java.text.ParseException: Unparseable date: "Fri Jul 15 12:00:00 GMT+300 2011"
    at java.text.DateFormat.parse(DateFormat.java:337)

我敢打赌它与 GMT 字符串有关。我想我已经用zzzzzZzzzZ 进行了尝试。 有什么想法吗?输入 GMT+300 甚至是标准的有效输入格式吗?

【问题讨论】:

  • 我阅读了the documentation,但无法解析。
  • 通过阅读文档,似乎 GMT+300 无效,但 GMT+3:00 有效。有什么方法可以先操作输入字符串的时区部分,使其真正有效?
  • GMT+300 是无效格式,+0300 是
  • Joda Time 可以解决这个问题。
  • 嗯,问题是字符串直接来自我们的 UI 框架的内置表单组件 DateItem (SmartGWT)。也许我会通知开发人员并等待它修复。

标签: java parsing datetime date simpledateformat


【解决方案1】:

根据Java Timezone specification,问题在于GMT+300 不是有效的GMT 字符串。

解决方案:处理输入字符串的时区部分。 GMT+300 ==> GMT+3:00

【讨论】:

    猜你喜欢
    • 2015-10-27
    • 1970-01-01
    • 2013-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-23
    • 2018-09-10
    相关资源
    最近更新 更多