为什么用日历设置日期会给我错误的日期

我将日期设置为2013-01-01 00:00:00,但日期为格林威治标准时间2月1日00:00:00 GMT + 01:00 2013

为什么?

Calendar calendar = Calendar.getInstance(); calendar.set(2013, 1, 1, 0, 0, 0); Date startDate = calendar.getTime(); 

Java编号的日期类中的月份编号从0开始。 使用Calendar类中的月常量来避免这种常见错误。

 calendar.set(2013, Calendar.JANUARY, 1, 0, 0, 0); 

1表示2月。 0是1月。 从0开始索引月份。使用助记符总是更好: Calendar.JANUARY

只是一个相关的问题……

起初我以为这不是我得到的同样的问题,因为我的一年是错的。 我已经为12月设置了’12’,但由于月份是一个偏移并且从0开始,因此日历实际上会将那个12推到第二年的1月,所以如果你的年份错了,检查你的月份是否也错了,它可能像我的一样翻滚。

即setDate(2015,12,6)的结果日期为2016年1月6日

所以使用日历月度常数。