【问题标题】:How to parse Joda time of this format如何解析这种格式的 Joda 时间
【发布时间】:2013-07-17 12:06:05
【问题描述】:

我在我的 JSON 中转换了格式为 YYYY-mm-DD HH:MM:SS 的 DateString 并使用代码持久化到 POJO

DateTimeFormatter format = DateTimeFormat.forPattern("yyyy-MM-dd HH:mm:ss");
this.startDate = format.parseDateTime(startDate);

当我将 POJO 转换回 JSON 时,日期写成 2013-07-12T18:31:01.000Z
我们如何将时间字符串 2013-07-12T18:31:01.000Z 解析回 JodaDateTime 对象。格式化程序应该是什么。
我用YYYY-mm-DD HH:MM:SS 没用

【问题讨论】:

  • 为什么不使用Date 而不是格式化日期?这将摆脱所有关于格式化的问题。您应该只将日期格式化为字符串以显示给用户。软件在处理日期时不应该关心日期格式。

标签: java jackson jodatime


【解决方案1】:

2013-07-12T18:31:01.000Z 是标准的 ISO 日期时间格式。
您可以使用标准 Joda 日期时间格式化程序 ISODateTimeFormat::dateTime()
示例:

  String startDate = "2013-07-12T18:31:01.000Z";
  DateTime dt = ISODateTimeFormat.dateTime().parseDateTime(startDate);  

在这种情况下,日期将转换为您所在时区的日期。
如果您想忽略您的时区,请在格式化程序中使用UTC zone:

  String startDate = "2013-07-12T18:31:01.000Z";
  DateTime dt = ISODateTimeFormat.dateTime().withZone(DateTimeZone.UTC).parseDateTime(startDate);

【讨论】:

    【解决方案2】:

    您应该将X 附加到您的模式中。 SimpleDateFormat API 包含您可以在 DateFormat 中使用的完整字段列表,包括用于“ISO 8601 时区”的 X

    ISO 8601 时区指定为

    模式字母的数量指定格式化和解析的格式如下:

     ISO8601TimeZone:
             OneLetterISO8601TimeZone
             TwoLetterISO8601TimeZone
             ThreeLetterISO8601TimeZone
     OneLetterISO8601TimeZone:
             Sign TwoDigitHours
             Z
     TwoLetterISO8601TimeZone:
             Sign TwoDigitHours Minutes
             Z
     ThreeLetterISO8601TimeZone:
             Sign TwoDigitHours : Minutes
             Z
    

    【讨论】:

      【解决方案3】:

      API 文档并不完全清楚:应该阅读

      OneLetterISO8601TimeZone 表示“X”并产生 Sign TwoDigitHours 或 Z,

      因此类似于 -05

      TwoLetterISO8601TimeZone 表示“XX”并产生 Sign TwoDigitHours Minutes 或 Z,

      因此类似于 -0500

      和 ThreeLetterISO8601TimeZone 表示“XXX”并产生 Sign TwoDigitHours : Minutes

      因此类似于 -05:00

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-19
        • 1970-01-01
        • 2013-08-17
        • 2015-07-06
        相关资源
        最近更新 更多