【问题标题】:What is the correct date format for parsing dates in Jackson?在杰克逊中解析日期的正确日期格式是什么?
【发布时间】:2013-08-14 19:29:51
【问题描述】:

我正在将 Map 映射到 Java 模型,直到今天一切正常。一些新数据似乎失败了。这是错误:

org.codehaus.jackson.map.JsonMappingException: Can not construct instance of   
java.util.Date from String value '2013-08-14T12:16:02.31-05:00': not a valid
representation (error: Can not parse date "2013-08-14T12:16:02.31-05:00": not
compatible with any of standard forms ("yyyy-MM-dd'T'HH:mm:ss.SSSZ", "yyyy-
MM-dd'T'HH:mm:ss.SSS'Z'", "EEE, dd MMM yyyy HH:mm:ss zzz", "yyyy-MM-dd"))

在我的 Jackson ObjectMapper bean 中,我设置了日期格式:

<property name="myFormat">
    <bean class="java.text.SimpleDateFormat">
            <constructor-arg type="java.lang.String" value="yyyy-MM-dd'T'HH:mm:ss'Z'"/>     
    </bean>
</property>

日期格式有什么问题?

【问题讨论】:

    标签: java serialization jackson


    【解决方案1】:

    您的毫秒数少了一位;否则将匹配默认的 ISO-8601 值。因此,如果可能,只生成使用 3 位而不是 2 位的日期/时间值。

    另外,你自定义的日期格式可能不是通过Spring注册的(不确定,我自己不用Spring);但如果是,则您指定将文字 Z 用于时区;但您的值实际上使用相对偏移量。所以你可能需要去掉引号。

    【讨论】:

      猜你喜欢
      • 2014-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 1970-01-01
      • 2020-04-21
      相关资源
      最近更新 更多