二月在Java日历

时间:2014-06-30 19:38:15

标签: 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("es","MX");
            Calendar calendarTemp = new GregorianCalendar();
            calendarTemp.set(Calendar.MONTH,1);
            String mesTemp = calendarTemp.getDisplayName(Calendar.MONTH, Calendar.LONG, locale);
            System.out.println(mesTemp);

        }

}

感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

我的猜测是2月30日将在3月2日回归。

这个重复的问题有最好的答案: A strange behavior from java.util.Calendar on February

答案 1 :(得分:3)

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

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

作为旁注,它使代码更易于使用来自Calendar类的常量,例如。 Calendar.FEBRUARY而不是幻数,特别是因为月份是0 ...

答案 2 :(得分:3)

你在尝试之前尝试过使用clear吗?像这样:

Locale locale = new Locale("es","MX");
Calendar calendarTemp = new GregorianCalendar();
calendarTemp.clear(); //add this line
calendarTemp.set(Calendar.MONTH,1);

我测试了,结果是“二月”。

问候。