2012-02-24 229 views
0

我有一點(Java),我在哪裏試圖簡單地從當前日期減去7天。在我看來,像Calendar.add(..)應使用的方法(在這裏是什麼以前的問題似乎在說),所以這是我的嘗試:Java日期/日曆奇怪

SimpleDateFormat df = new SimpleDateFormat("dd-mm-yyyy"); 
GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance(); 
System.out.println("ReportUtil.getDefaultReportStartDate cal: "+cal.toString()); 
System.out.println("PRE ReportUtil.getDefaultReportStartDate: "+df.format(cal.getTime())); 
cal.add(Calendar.DATE, -7); 
System.out.println("POST ReportUtil.getDefaultReportStartDate: "+df.format(cal.getTime())); 

這看起來確定我,但你」從下面的月份輸出中看到的結果似乎有點...側身!月份/日期的當天似乎正確變化,但月份發生了什麼?!

ReportUtil.getDefaultReportStartDate cal: java.util.GregorianCalendar[time=1330098699960,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="GB-Eire",offset=0,dstSavings=3600000,useDaylight=true,transitions=242,lastRule=java.util.SimpleTimeZone[id=GB-Eire,offset=0,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2012,MONTH=1,WEEK_OF_YEAR=8,WEEK_OF_MONTH=4,DAY_OF_MONTH=24,DAY_OF_YEAR=55,DAY_OF_WEEK=6,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=3,HOUR_OF_DAY=15,MINUTE=51,SECOND=39,MILLISECOND=960,ZONE_OFFSET=0,DST_OFFSET=0] 

PRE ReportUtil.getDefaultReportStartDate: 24-51-2012 
POST ReportUtil.getDefaultReportStartDate: 17-51-2012 

回答

4

mm是分鐘的格式字符串。你想MM

2

你的結果似乎是正確的。

在您的第一個日誌行的兩個日期中的月份是「1」,這意味着2月份。

的「-mm-」你SimpleDateFormat指分鐘,而不是一個月,因此「51」