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

时间:2013-01-17 16:44:51

标签: java calendar

我将日期设置为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();

3 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:5)

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

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

答案 2 :(得分:0)

只是一个相关的问题......

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

即。 setDate(2015,12,6)生成日期为2016年1月6日

因此使用日历月度常数。