【问题标题】:Having issues formatting a specific Date/Time format在格式化特定日期/时间格式时遇到问题
【发布时间】:2013-03-03 10:25:26
【问题描述】:

我在格式化以下日期/时间时遇到问题:

2013-01-10T17:04:24.3787635-02:00

现在,我知道2013-01-10 是日期(显然)。

17:04:24.3787635 可能是时间,虽然我不知道点后面的数字是什么意思。

-02:00 我假设是时区 (GMT)。

如何在 java 中解析这个? (也许使用 JodaTime)。

【问题讨论】:

    标签: java parsing date time


    【解决方案1】:

    您可以使用JodaTime 来解析此日期:

    String time = "2013-01-10T17:04:24.3787635-02:00";
    DateTimeFormatter df = DateTimeFormat.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSSSSSSZ");
    DateTime dateTime = df.parseDateTime(time);
    

    点后的数字 (.) 是在 JodaTime's DateTimeFormat 中用 S 表示的秒数。 Z 代表时区模式。

    【讨论】:

    • 非常感谢您的帮助。虽然我有最后一个问题。当我执行dateTime.getZone().getID() 时,它返回给我America/Sao_Paulo。我期待GMT-3。有没有办法让它返回我所期望的,或者它只是返回我应用时区作为参考的地方?
    【解决方案2】:

    尝试使用这种模式:

    "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
    

    可以解析这种格式的日期:

    2001-07-04T12:08:56.235-07:00
    

    虽然,源字符串中的3787635 很麻烦。它看起来不像毫秒。

    查看java.text.SimpleDateFormat 了解有关模式的更多详细信息。

    您也可以尝试DatatypeConverter.parseDateTime,它返回一个java.util.Calendar 对象。

    DatatypeConverter.parseDateTime("2013-01-10T17:04:24.3787635-02:00").getTime()
    

    上面的语句执行没有任何错误。

    【讨论】:

      【解决方案3】:

      只有使用 javax.xml.XMLGregorianCalendar 才能正确解析此格式。您不能使用 SimpleDateFormat,因为它接受 SSS 作为毫秒数,而不是作为秒的小数部分。

          String s = "2013-01-10T17:04:24.3787635-02:00";
          DatatypeFactory dtf = DatatypeFactory.newInstance();
          Date date = dtf.newXMLGregorianCalendar(s).toGregorianCalendar().getTime();
      

      【讨论】:

        【解决方案4】:

        您的时间字符串的格式是 ISO8601 格式。 JodaTime 类ISODateTimeFormat 将直接支持该格式。但是,您将失去任何超过毫秒的精度。

        String time = "2013-01-10T17:04:24.3787635-02:00";
        DateTime dateTime = ISODateTimeFormat.dateTime().parseDateTime(time);
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-10-05
          • 2020-10-26
          相关资源
          最近更新 更多