此代码段
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.
答案 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
删除所有字段