getTimeInMilis()和.getTime()。getTime()之间有什么区别?

时间:2016-06-01 12:25:49

标签: java

我们说我有一个Calendar对象c。这条线的结果是什么:

c.getTimeInMilis();

c.getTime().getTime();

4 个答案:

答案 0 :(得分:2)

表面上他们是完全相同的。

但是我会为第一个填充,因为它不会(明确地)创建一个java.util.Date临时的。

c.getTimeInMilis();也更具描述性。

我个人不喜欢Java中的“链式”函数语句(例如a.b().c().d();之类的东西),因为它们往往是NullPointerException可能潜伏的地方。

答案 1 :(得分:2)

直接来自Oracle的calendar API

getTime()

  

返回表示此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

getTimeInMillis()

  

以毫秒为单位返回此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)

Java源代码可用。 http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Calendar.java#Calendar.getTime%28%29

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