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

And*_*Dev 1 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();
Run Code Online (Sandbox Code Playgroud)

Ada*_*der 7

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


Bil*_*ard 6

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

calendar.set(2013, Calendar.JANUARY, 1, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)