【发布时间】:2011-02-22 11:26:28
【问题描述】:
我正在使用 XStream 将包含日期字段的对象序列化为 XML 并再次返回。但是,写入 XML 的日期比我创建的实际日期早一个小时。
MyComplexObject o = new MyComplexObject();
o.addChild(new MyComplexObjectChild(2, {0.1, 0.1, 0.2, 0.3, 0.5}, new Date(1111111111));
System.out.println(new Date(1111111111)); //Tue Jan 13 21:38:31 GMT 1970
//serialize using XStream
这是输出的 XML:
<MyComplexObject>
<children>
<MyComplexObjectChild>
<someNumber>2</someNumber>
<someOtherNumbers>
<double>0.1</double>
<double>0.1</double>
<double>0.2</double>
<double>0.3</double>
<double>0.5</double>
</someOtherNumbers>
<date>1970-01-13 21:38:31.111 GMT</date>
</MyComplexObjectChild>
</children>
</MyComplexObject>
现在,使用 XStream 反序列化:
MyComplexObject o = xstream.fromXML(output);
System.out.println(o.getDate()) //Tue Jan 13 22:38:31 GMT 1970
如您所见,输出的日期已经过了一个小时 - 我该如何解决这个问题?
干杯,
皮特
【问题讨论】:
-
如果 XStream 序列化和
System.out.println发生在不同的机器上,请检查它们的时区设置。 -
它们发生在同一台机器上...
-
嗯,好的,我重新检查了。反序列化对象中的日期不正确。将更改问题以表明这一点。
-
不要使用java.util.Date中的
toString()...打印出调用getTime()的结果就可以了。那是内部数据表示,没有搞乱时区。
标签: java xml serialization date