2012-02-24 6 views
0

나는 현재 날짜에서 7 일을 빼기 위해 (자바) 약간의 것을 가지고있다. Calendar.add (..)이 그 내가 뭘하려 그래서,이 방법은 사용하는 (그리고 여기에 무엇을 이전의 질문에 말을하는 것)해야처럼 나에게 듯 : 나를하지만 '확인을 보이는자바 날짜/캘린더 기이함

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 

답변

6

SimpleDateFormat df = new SimpleDateFormat ("dd-mm-yyyy");

mm은 분을 의미하므로 이상한 달 값이 표시됩니다. 시도 :

SimpleDateFormat df = new SimpleDateFormat("dd-MM-yyyy"); 

당신은 여기 포맷 기호의 전체 목록을 참조 할 수 있습니다 http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html

+0

빙고의 따라서 홀수 달을 의미한다! 많은 감사합니다. – DaFoot

4

mm은 분에 대한 형식 문자열입니다. 원하는 MM

2

귀하의 결과가 올 것 같다.

월은 첫 번째 로그 라인의 두 날짜에서 모두 "1"이며 2 월을 의미합니다. 당신의 SimpleDateFormat에서

은 "-mm-는"분하지 월, "51"