Java 爪哇日历中的二月

Java 爪哇日历中的二月,java,calendar,Java,Calendar,我有一个问题,我认为这段代码的结果应该是“二月”,但结果是“三月”,我做错了什么 import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Locale; public class Calendario { public static void main(String args[]){ Locale locale = new Locale("e

我有一个问题,我认为这段代码的结果应该是“二月”,但结果是“三月”,我做错了什么

    import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;

public class Calendario {

        public static void main(String args[]){
            Locale locale = new Locale("es","MX");
            Calendar calendarTemp = new GregorianCalendar();
            calendarTemp.set(Calendar.MONTH,1);
            String mesTemp = calendarTemp.getDisplayName(Calendar.MONTH, Calendar.LONG, locale);
            System.out.println(mesTemp);

        }

}

谢谢你的帮助。

我猜2月30日将回到3月2日

这个重复的问题有最好的答案:

今天是6月30日,您从未在代码中设置月份,因此假定为30日。由于2月份的天数不到30天,所以它会溢出,最后会在3月份结束。尝试下面的代码,请注意,设置月份会影响显示内容:

calendarTemp.set(Calendar.MONTH, 1);
calendarTemp.set(Calendar.DAY_OF_MONTH, 1);

作为旁注,使用
日历
类中的常量(例如
日历.二月
而不是幻数)可以使代码更具可读性,特别是因为月份是以0为基础的…

您尝试过使用设置前清除吗?像这样:

Locale locale = new Locale("es","MX");
Calendar calendarTemp = new GregorianCalendar();
calendarTemp.clear(); //add this line
calendarTemp.set(Calendar.MONTH,1);
我做了测试,结果是“二月”


问候。

你今天(即6月30日)试过了吗?除了亨利的评论之外,今天是6月30日,将6月30日定为2月30日=2月30日=3月30日=2月2日=3月2日?可能重复@Jesper,可能值得补充的是,仅在非闰年。