为什么使用calendar.getTimeInMillis来获取unix时间戳而不是Date.getTime

时间:2015-11-30 21:48:06

标签: java datetime calendar

我看到代码执行此操作:

long getTime(Date value){
     Calendar calendar = Calendar.getInstance(UTC);
     calendar.setTime(value);
     long unixMillis = calendar.getTimeInMillis();
     return unixMillis; 
 }

使用calendar.getTimeInMillis而不是value.getTime()有什么意义?

2 个答案:

答案 0 :(得分:2)

getTime()实例调用Date并没有错。 Date实际上有一些已弃用的方法,以及它的所有参数化构造函数。如果您关心国际化,官方文档建议使用Calendar。根据官方文档

  

Calendar对象可以生成实现特定语言和日历样式的日期时间格式所需的所有日历字段值(例如,Japanese-Gregorian,Japanese-Traditional)。

例如,采用方法getFirstDayOfWeek()。它将返回一个整数,对应于SUNDAY(在日历中也定义为常量),在美国和法国的星期一。

根据您当前的区域设置,日历中有许多这样的变体。日历允许您考虑这些,而日期提供有限的支持。您选择哪个班级取决于您的应用需求。

答案 1 :(得分:0)

它们非常相似,因为它们以毫秒为单位返回 Epoch 的时间。关键的区别是Date.getTime()以UT(世界时)衡量。方法Calender.getTimeInMillis()基于UTC,其是用原子钟测量的通用时间,包括闰秒。

这使Calender.getTimeInMillis()方法更精确。

查看这些以获取更多信息: https://docs.oracle.com/javase/7/docs/api/java/util/Date.html#getTime() https://docs.oracle.com/javase/7/docs/api/java/util/Calendar.html#getTimeInMillis()