我一定是错误地使用了 java.util.Calendar#add(...) 方法,因为它给了我意想不到的结果。假设一些初始条件:
- 我创建了一个日历对象并将其初始化为 2012 年 1 月 30 日。
- 我尝试添加 47 周,从中提取日期并打印出结果。
- 我尝试将 48 周添加到原始实例(或它的克隆副本),并打印出结果。
我假设两个结果之间会有 7 天的差异,但我得到的是 7 天 + 1 年。
例如:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;
public class CalendarFun {
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, Calendar.JANUARY);
cal.set(Calendar.DAY_OF_MONTH, 30);
cal.set(Calendar.YEAR, 2012);
Date date = cal.getTime();
SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/YYYY");
System.out.println(dateFormat .format(date));
Calendar newCal = (Calendar) cal.clone();
newCal.add(Calendar.WEEK_OF_YEAR, 47);
System.out.println("add 47 weeks: " + dateFormat.format(newCal.getTime()));
newCal = (Calendar) cal.clone();
newCal.add(Calendar.WEEK_OF_YEAR, 48);
System.out.println("add 48 weeks: " + dateFormat.format(newCal.getTime()));
}
}
这打印出来:
01/30/2012
add 47 weeks: 12/24/2012
add 48 weeks: 12/31/2013
2013 年 12 月 31 日?我该如何解决?