Calendar.getInstance()。getTime()是否会给我一个与新Date()不同的答案?

我正在尝试整合一些非常混乱的代码,但我想确保我不会破坏它。 在某些地方,我看到一个日期创建为Calendar.getInstance().getTime()而在其他地方,它只是new Date() 。 如果我将它们全部转换为new Date()或者是否有某些原因我可能想要使用另一个?

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

但是,Calendar实现会考虑其他因素,例如Locale,或者如果语言环境是JP或TH ……您可以在两个类的源代码中看到它。

我想两者都会回归:

Calendar.getInstance().getTime() :返回表示此Calendar的时间值的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