我有一个问题,我认为这段代码的结果应该是"二月",但结果是"三月",我做错了什么?
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);
}
}
感谢您的帮助。
答案 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);
我测试了,结果是“二月”。
问候。