增加日历与日

时间:2013-11-12 09:00:03

标签: java date time calendar

当我在日历中增加天数时,我遇到了一个奇怪的问题。我想循环一年的每一天。这是我的代码

Date d = null;
SimpleDateFormat textFormat = new SimpleDateFormat("dd-MM-yyyy");
String paramDateAsString = "10-1-2012";
d = textFormat.parse(paramDateAsString);
Calendar cal = Calendar.getInstance(); 
cal.setTime(d);

for(int i = 0; i < 365; i++) {
   cal.add(Calendar.DAY_OF_YEAR, 1);
   System.out.println(cal.get(Calendar.YEAR)+"-"+cal.get(Calendar.MONTH)+1+"-         "+cal.get(Calendar.DAY_OF_MONTH)+" 00:00:00'");
}

我得到了这个输出:

  

...
  2012-01-29 00:00:00'
  2012-01-30 00:00:00'
  2012-01-31 00:00:00'
  2012-11-1 00:00:00'
  2012-11-2 00:00:00'
  ...

1 个答案:

答案 0 :(得分:2)

这是问题所在:

"-"+cal.get(Calendar.MONTH)+1

实际上正在执行 string 连接 - 它实际上是

("-" + cal.get(Calendar.MONTH)) + 1

所以,当cal.get(Calendar.MONTH)返回1时,这是有效的:

("-" + 1) + 1 // which is...
"-1" + 1 // which is...
"-11"

可以支持添加:

"-" + (cal.get(Calendar.MONTH) + 1)

...但最好使用SimpleDateFormat来执行格式化,而不是手动执行。