为什么日历 class (Java) 会重置其字段?
Why is Calendar class (Java) resetting its fields?
我正在尝试设置日历 class 实例的属性。但每次我到 12 月 30 日,它都会重置到下一年。这是日历中的抽奖 class?
public Calendar setCalendar()
{
String Date = "2013-12-30";
int yyyy = Integer.parseInt(date.substring(0,4));
int mm = Integer.parseInt(date.substring(5,7));
int dd = Integer.parseInt(date.substring(8,10));
System.out.println(yyyy + " " + mm + " " + dd);
Calendar Cal= new GregorianCalendar();
Cal.set(yyyy,mm,dd);
System.out.println(Cal.get(Calendar.YEAR)+","+Cal.get(Calendar.MONTH));
return Cal;
}
输出:
2013年12月30日
2014,0
对于 Calendar
,月份是从 0 开始的,因此您实际上是将月份设置为明年的一月。
如果您确实需要使用 Calendar
,我建议至少使用 SimpleDateFormat
将您的 String
解析为 Date
并使用它设置日历。
查看日历 API 文档,月值基于 0,即一月为 0。
month - the value used to set the MONTH calendar field. Month value is 0-based. e.g., 0 for January.
您将月份设置为 12。这实际上为您提供了下一年。要更正尝试:
Cal.set(yyyy,mm-1,dd);
希望对您有所帮助
我正在尝试设置日历 class 实例的属性。但每次我到 12 月 30 日,它都会重置到下一年。这是日历中的抽奖 class?
public Calendar setCalendar()
{
String Date = "2013-12-30";
int yyyy = Integer.parseInt(date.substring(0,4));
int mm = Integer.parseInt(date.substring(5,7));
int dd = Integer.parseInt(date.substring(8,10));
System.out.println(yyyy + " " + mm + " " + dd);
Calendar Cal= new GregorianCalendar();
Cal.set(yyyy,mm,dd);
System.out.println(Cal.get(Calendar.YEAR)+","+Cal.get(Calendar.MONTH));
return Cal;
}
输出: 2013年12月30日 2014,0
对于 Calendar
,月份是从 0 开始的,因此您实际上是将月份设置为明年的一月。
如果您确实需要使用 Calendar
,我建议至少使用 SimpleDateFormat
将您的 String
解析为 Date
并使用它设置日历。
查看日历 API 文档,月值基于 0,即一月为 0。
month - the value used to set the MONTH calendar field. Month value is 0-based. e.g., 0 for January.
您将月份设置为 12。这实际上为您提供了下一年。要更正尝试:
Cal.set(yyyy,mm-1,dd);
希望对您有所帮助