格里高利历午夜时间没有给出一个圆数

时间:2014-03-06 16:39:34

标签: java date

此代码段

Calendar cal = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
cal.set(2013, Calendar.NOVEMBER, 6, 0, 0, 0);
long time = cal.getTimeInMillis();

结果为time == 1383696000628

从哪里得到那些最后628毫秒?

我正在使用Java 6.

2 个答案:

答案 0 :(得分:4)

Calendar.set(int year,int month,int date,int hourOfDay,int minute,int second)不会更改MILLISECOND字段,其API说

设置字段YEAR,MONTH,DAY_OF_MONTH,HOUR,MINUTE和SECOND的值。保留其他字段的先前值。如果不需要,请先调用clear()。

答案 1 :(得分:3)

cal.set(int, int, int, int, int, int)未设置毫秒数。

因此,Calendar实例在创建时仍然包含milliseconds

您可以使用GregorianCalendar(int year, int month, int dayOfMonth),但您可以使用区域设置,或cal.set(Calendar.MILLISECOND, 0)删除毫秒。

修改

正如Jonathan Drapeau在下面的评论中所建议的那样,您也可以在致电cal.clear()之前致电set删除所有字段