2015-01-10 3 views
0

나는 매일 날짜를 반환해야하는 프로그램을 작성 중입니다. DateTime.plusDays (1)을 사용하고 있지만 1 월 31 일 이후에 2 월 32 일을 반환합니다. 아래 코드를 단순화했습니다. 내가 가진Java jodatime은 월말 이후에 1 등상을 다시 가질 수 없습니다.

public static void main(String[] args) { 

     DateTime datetime = new DateTime(1900, 1, 31, 0, 0, 0); 
     DateTimeFormatter fmt = DateTimeFormat.forPattern("YYYYMMDD"); 
     for (int i = 0; i < 10; i++) { 
      System.out.println(datetime.toString(fmt)); 
      datetime = datetime.plusDays(1); 
     } 
    } 

결과는

19000131 
19000232 
19000233...... 

사람이 조언을 주실 수 있습니까? 미리 감사드립니다.

+0

문제가 DateTimeFormatter에있는 경우, 결과를 보려면 java.util.Date로 인쇄 해보십시오 !! – alizelzele

+3

날짜 형식으로 yyyyMMdd를 시도하십시오. 편지 케이스는 여기에서 중요합니다. DD는 일년 중의 하나입니다. – Dirk

+0

게다가, 'YYYY'는 거의 당신이 원하는 것이 아닙니다. 소문자 버전'yyyy'를 사용하십시오. – Dirk

답변

0

public static void main(String[] args) { 
    Calendar calendar = Calendar.getInstance(); 
    calendar.set(1900, 0, 31); // month is 0 based 
    for (int i = 0; i < 10; i++) { 
     System.out.println(String.format("%4d%02d%02d", calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH) + 1, calendar.get(Calendar.DAY_OF_MONTH))); 
     calendar.add(Calendar.DAY_OF_MONTH, 1); 
    } 
} 
유 joda을 사용하여 insisist 경우

--UPDATE--

, u는 사용할 수 있습니다 (자바 표준 캘린더와) 같은 결과를 얻을 밖으로 joda 시간이이를 사용해보십시오 이 :

public static void main(String[] args) { 
    DateTime datetime = new DateTime(1900, 1, 31, 0, 0, 0); 
    for (int i = 0; i < 10; i++) { 
     System.out.printf("%4d%02d%02d\n", datetime.getYear(), datetime.getMonthOfYear(), datetime.getDayOfMonth()); 
     datetime = datetime.plusDays(1); 
    } 
} 
관련 문제