Java 使用日历设置日期时出现的问题

Java 使用日历设置日期时出现的问题,java,datetime,calendar,Java,Datetime,Calendar,我试图使用以下代码片段将日期设置为2012年12月31日,但我得到的是2013年3月3日,这里有什么问题 Calendar today = Calendar.getInstance(); today.set(Calendar.MONTH, 13); today.set(Calendar.DAY_OF_MONTH, 31); today.set(Calendar.YEAR, 2012); long calendarNeverEndDate = today.getTime().getTime();

我试图使用以下代码片段将日期设置为2012年12月31日,但我得到的是2013年3月3日,这里有什么问题

Calendar today = Calendar.getInstance();
today.set(Calendar.MONTH, 13);
today.set(Calendar.DAY_OF_MONTH, 31);
today.set(Calendar.YEAR, 2012);

long calendarNeverEndDate = today.getTime().getTime();
System.out.println("calendarNeverEndDate:"
                   + sdf.formatLocal(calendarNeverEndDate));

那是因为月份是0索引的是的,它与天不一致:-

编辑:正如Romain提到的,最好使用常量

日历:12月1日
那是因为月份是0索引的是的,它与天不一致:-

编辑:正如Romain提到的,最好使用常量

日历:12月1日
啊,爪哇日期!传入一个无效值,它将允许它通过并以不可预知的方式运行。而有效值通常是违反直觉的。。。叹气顺便说一句,您应该提到使用Calendar.DECEMBER可能更安全。啊,Java日期!传入一个无效值,它将允许它通过并以不可预知的方式运行。而有效值通常是违反直觉的。。。叹气顺便说一句,您应该提到使用Calendar.DECEMBER可能更安全。