【问题标题】:How can I recognize the Zulu time zone in Java DateUtils.parseDate?如何识别 Java DateUtils.parseDate 中的祖鲁时区?
【发布时间】:2009-01-08 14:55:19
【问题描述】:

我有2008-12-23T00:00:00Z 格式的日期。这看起来很像带有 Zulu (UTC) 时区的 ISO 8601 format。我虽然下面的代码会解析它(使用commons-lang):

String pattern = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.getPattern();
Date d = DateUtils.parseDate(dateToParse, new String[] { pattern });

如果我采用相同的模式 (yyyy-MM-dd'T'HH:mm:ssZZ) 但删除时区,它会起作用。

你知道我如何识别祖鲁时区吗?我只能访问 Java 1.4 和 Jakarta commons-lang。我还没有Joda Time...

【问题讨论】:

    标签: java date parsing timezone


    【解决方案1】:

    我认为 commons-lang 正在使用 java 的内置 DateFormat 或 SimpleDateFormat ,它会为您的日期抛出 ParseException。如果您的所有输入字符串都以尾随 Z 结尾,您可以使用:

    
    java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
    // explicitly set timezone of input if needed
    df.setTimeZone(java.util.TimeZone.getTimeZone("Zulu"));
    java.util.Date date = df.parse("2008-12-23T00:00:00Z");
    

    【讨论】:

    • +1... 当我不使用 JodaTime 时,我总是需要查看这些垃圾
    【解决方案2】:

    看起来像是 commons-lang 的 FastDateFormat 中的一个错误。告诉他们,你最终应该得到修复。在此之前,您可以尝试预处理日期并将“Z”替换为“+00”

    【讨论】:

    • 好的,我试试。几年后我将无法升级到新版本的 commons-lang ;-) 但它可能会帮助其他人......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2021-05-31
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 2017-06-30
    相关资源
    最近更新 更多