我使用以下代码显示一周中的所有日期,但每当我选择一周的最后一个日期时,它会打印下周的日期。为什么会发生这种情况,我的代码中出现了问题。
/**Calendar week start on monday**/
Calendar selectedDate = Calendar.getInstance(Locale.US);
// Set current date to 21-april-2013
selectedDate.set(selectedDate.get(Calendar.YEAR), selectedDate.get(Calendar.MONTH), 21);
// create another instance of calendar
Calendar c = Calendar.getInstance(Locale.US);
// set current date to this new calendar instance
c = (Calendar) selectedDate.clone();
// Set the calendar to monday of the current week
c.setFirstDayOfWeek(Calendar.MONDAY);
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
// Print dates of the current week starting on Monday
DateFormat df = new SimpleDateFormat("dd/MM/yyyy", Locale.US);
for (int i = 0; i < 7; i++)
{
System.out.println(df.format(c.getTime()));
c.add(Calendar.DATE, 1);
}
OutPut显示日期
2013年4月22日至2013年4月28日
但它应该是
2013年4月15日至2013年4月21日
答案 0 :(得分:0)
您的开始日期是4月21日。
for (int i = 0; i < 7; i++)
{
System.out.println(df.format(c.getTime()));
c.add(Calendar.DATE, 1);
}
这可以解释为什么你的日期会遇到未来=)
答案 1 :(得分:0)
您将日期设置为21,这是星期日..
设置
时c.setFirstDayOfWeek(Calendar.MONDAY);
它将于2013年4月15日
所以,c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
显然设定为15-april-13
答案 2 :(得分:0)
您的代码在我的系统中正常运行