为什么要追加?
Calendar c1 = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
Calendar c2 = Calendar.getInstance(TimeZone.getTimeZone("GMT+2"));
System.out.println(c1.get(Calendar.HOUR_OF_DAY)+":"+c1.get(Calendar.MINUTE));
System.out.println(c2.get(Calendar.HOUR_OF_DAY)+":"+c2.get(Calendar.MINUTE));
System.out.println(c1.getTimeInMillis() - c2.getTimeInMillis());
输出:
18:12
20:12
0 !!!!!!!!
我有2个不同的Calendar obj,一个在UTC时区设置,一个在GMT + 2上。 当我打印小时和秒时不同但为什么这个差异(c1.getTimeInMillis() - c2.getTimeInMillis())是0 ???
答案 0 :(得分:1)
两个日历在UTC时间设置为相同的实例 - 它们是相同的。但是,它们被设置为不同的时区,报告函数get(Calendar.HOUR_OF_DAY)
使用它来为您提供当地时间的小时(即受时区影响)。所以,你的比较是针对瞬间的,这是相同的。
答案 1 :(得分:0)
让我们说它是在西雅图的下午2点。这意味着它在印第安纳波利斯的下午4点。这些地方之间当前时间的差异是2小时还是0小时?我很确定它是0,否则在时空连续体中就会出现撕裂:)
背后的技术推理正如MarcB上面评论的那样:
来自文档:http://docs.oracle.com/javase/6/docs/api/java/util/Calendar.html#getTimeInMillis%28%29
将此日历的当前时间作为UTC纪元的毫秒数返回。
使用什么时区来构造Calendar对象并不重要,它将是UTC。所以你的两个对象将在时间上具有相同的UTC时刻,它们之间的差异将为0。