我们说我有一个Calendar对象c。这条线的结果是什么:
c.getTimeInMilis();
和
c.getTime().getTime();
答案 0 :(得分:2)
表面上他们是完全相同的。
但是我会为第一个填充,因为它不会(明确地)创建一个java.util.Date
临时的。
c.getTimeInMilis();
也更具描述性。
我个人不喜欢Java中的“链式”函数语句(例如a.b().c().d();
之类的东西),因为它们往往是NullPointerException
可能潜伏的地方。
答案 1 :(得分:2)
直接来自Oracle的calendar API
返回表示此Calendar的时间值的Date对象 (距离Epoch"毫秒的偏差。)
// create a calendar
Calendar cal = Calendar.getInstance();
// print current time
System.out.println(" Current time is : " + cal.getTime());
打印 当前时间是:Wed Jun 01 08:51:58 EDT 2016
以毫秒为单位返回此Calendar的时间值。
// create a calendar
Calendar cal = Calendar.getInstance();
// print current time in milliseconds
System.out.println("Current time is : " + cal.getTimeInMillis());
打印 当前时间是:1464785518706
答案 2 :(得分:1)
来自Calendar.java
。
public final Date getTime() {
return new Date(getTimeInMillis());
}
getTime()
使用getTimeInMillis()
返回Date
个对象,因此它们基本相同。 显然可能getTimeInMillis()
会比getTime().getTime()
更快。
答案 3 :(得分:1)
Calendar.getTime():
public final Date getTime() {
return new Date(getTimeInMillis());
}
Calendar.getTimeInMillis():
public long getTimeInMillis() {
if (!isTimeSet) {
updateTime();
}
return time;
}
所以myCalendar.getTime()
只是new Date(myCalendar.getTimeInMillis())
的缩写。
... myCalendar.getTime().getTime()
是(深呼吸!)的捷径:
new Date(myCalendar.getTimeInMillis()).getTime();
...这是一种长期而低效的方式来获得同样的long
。