Calendar.getInstance().getTime()和new Date()会给我不同的答案吗?

11
我正在尝试整合一些非常混乱的代码,但我希望确保不会出错。在某些地方,我看到创建日期的方式为Calendar.getInstance().getTime(),而在其他地方则是使用new Date()。如果我将它们全部转换为new Date(),是否会导致问题?还是说有可能需要使用另外一种方法?
2个回答

16

从理论上来说,不会,因为java.util.Date和java.util.Calendar.getInstance()都最终使用System.currentTimeMillis()返回当前时间。

然而,Calendar实现考虑了其他因素,例如Locale,或者Locale是JP或TH等等...这些可以在两个类的源代码中看到。


3

我认为两者返回的结果相同:

Calendar.getInstance().getTime():返回一个Date对象,表示此日历的时间值(与Epoch(1970年1月1日00:00:00.000 GMT(公历))的毫秒偏移量)。

new Date():内部使用System.currentTimeMillis(),分配一个Date对象并初始化它,使其表示分配它时的时间,以最接近的毫秒为单位测量。当前时间和UTC 1970年1月1日午夜之间的差异,以毫秒为单位。

我检查了一下:

public static void main(String[] args) {
    Date date = new Date();
    Date date1 = Calendar.getInstance().getTime();

    System.out.println(date +" = " + date1);

}

输出:

Wed Aug 15 02:45:15 IST 2012 = Wed Aug 15 02:45:15 IST 2012

1
仅仅检查一次并不能确保两者没有不同的情况。需要权威信息来确认。 - ToolmakerSteve
请参考Filipe Fedalto的答案,我认为他解释得更好。 - Anand Vaidya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接