Java jackson配置日期

时间:2013-12-03 15:39:47

标签: java json timezone jackson date-parsing

我正在使用jackson配置器来序列化 - 反序列化日期。

我正在使用此

SerializationConfig serConfig = mapper.getSerializationConfig();
serConfig.setDateFormat(new SimpleDateFormat("MM/dd/yyyy HH:mm:ss z"));

DeserializationConfig deserializationConfig = mapper.getDeserializationConfig();
deserializationConfig.setDateFormat(new SimpleDateFormat("MM/dd/yyyy HH:mm:ss z"));

现在如果我通过10/10/2013 02:30:00 EST它允许我这样做,但10/10/2013 02:30:00给了我错误。

如何让配置程序解析两者?

1 个答案:

答案 0 :(得分:1)

您不应该在没有时区的情况下传递日期时间。这样做是无稽之谈,没有意义。就像保存没有区号的本地电话号码一样。

杰克逊在UTC时区保存其日期。这意味着根本没有时区。因此,您传递的日期时间必须具有时区,以便Jackson可以将值调整为UTC。我实际上并不知道或使用杰克逊,但这就是他们所说的。

如果传递日期时间的代码知道或可以推断或推断时区,则应该这样做并附加时区。

如果您要传递已经是UTC的日期时间,请为Zulu添加" Z"的时区。

注意:使用3个字母的时区代码不是一个好习惯。它们不是标准化的,经常有重复。您的示例中的EST值表示全球至少有3个时区:US, Australia, and Brazil。请改用name of time zone

提示:如果您在Java中使用日期工作,请获取第三方Joda-Time库,而不是使用java.util.Date/Calendar类。