java.util.Date类使用不同的方法为同一日期提供不同的输出

shr*_*e18 5 java

public static void main(String[] args) throws ParseException {
    // create a date
    Date date = new Date();
    long diff = date.getTime();
    Date date1 = new Date(2013, 10, 1, 11, 6);
    long diff1 = date1.getTime();
    System.out.println("date is 1-10-2013, " + diff + " have passed.");
    System.out.println("date is 1-10-2013, " + diff1 + " have passed.");
}
Run Code Online (Sandbox Code Playgroud)

而输出是

date is 1-10-2013, 1380605909318 have passed.
date is 1-10-2013, 61341428160000 have passed.
Run Code Online (Sandbox Code Playgroud)

任何人都能详细说明1380605909318和61341428160000之间的区别吗?

Jon*_*eet 12

这一行:

Date date1 = new Date(2013, 10, 1, 11, 6);
Run Code Online (Sandbox Code Playgroud)

......不做你所做的事情.这创建了一个Date对象,代表当地时间11点06分的391311月 1 日.我不认为这就是你想要的.

事实上,如果你改变你的代码,包括日期本身,而不是硬编码你认为正确的价值将是,你会发现:

System.out.println("date is " + date + ", " + diff + " have passed.");
System.out.println("date is " + date1 + ", " + diff1 + " have passed.");
Run Code Online (Sandbox Code Playgroud)

建议者被弃用是有原因的 - 你应该注意弃用以及文档.

现在,你可以只使用java.util.Calendar替代-但其实我建议你使用乔达时间相反,如果你所能.这是一个比java.util.Calendar/ 更清洁的API Date.或者,如果您可以使用具有新JSR-320日期/时间API的Java 8预发行版.