日历序列化反序列化

时间:2012-01-25 08:44:30

标签: java datetime

当我在一个pc1上序列化日期并在另一个pc2上反序列化时,我得到了pc2的本地日期。 与Calendar实例相同时我会得到什么?情况是否相同?

2 个答案:

答案 0 :(得分:5)

Date代表一个时间点(1970年1月1日起的毫秒数)。不要被Date.toString()中的时区混淆,您总是序列化包含在类中的long值。

另一方面,

Calendar表示在给定时区中的日期和时间。这意味着如果源计算机处于GMT + 1且GMT + 2中的目标计算机,但您发送Calendar设置为GMT-6,则双方将一直是GMT-6。

据说发送Date更安全(并且使用更少的带宽)并让每台计算机使用本地时区显示

答案 1 :(得分:2)

Calendar类实现Serializable,您可以使用序列化API来保存它。 但是,我喜欢时间戳:

  

此日历的当前设置时间,以毫秒为单位   1970年1月1日之后,格林威治标准时间0:00:00。

我们可以简单地按新日期(时间戳)反序列化时间戳,它会自动转换为本地时区。

Calendar类还定义了setTime方法:

Calendar.getInstance().setTime(date)

Calendar.getInstance().setTimeInMillis(ts)