当我在一个pc1上序列化日期并在另一个pc2上反序列化时,我得到了pc2的本地日期。 与Calendar实例相同时我会得到什么?情况是否相同?
答案 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)