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

Java 为什么要使用calendar.getTimeInMillis来获取unix时间戳,而不是Date.getTime,java,datetime,calendar,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()有什么意义

我看到了这样做的代码:

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

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

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

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

请查看这些以了解更多信息:
Date
实例调用
getTime()
没有什么错误。Date实际上有一些不推荐使用的方法,以及它的所有参数化构造函数。如果您关心国际化,官方文档建议使用
日历
。根据官方文件

Calendar对象可以生成实现特定语言和日历样式(例如,日文公历、日文繁体)的日期时间格式所需的所有日历字段值

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


根据您当前的语言环境,日历中有许多类似的变体。Calendar允许您考虑这些,而Date提供的支持有限。选择哪个类实际上取决于应用程序的需要。

可能是因为有人不知道
getTime()
。我建议你让作者检查一下。