2013-06-02 2 views
1

JodaTime을 사용하기 위해 두 날짜 간의 일, 월, 년 수를 계산하고 싶습니다. 내 날짜가 org.joda.time.DateTime 일 경우 결과를 완벽하게 얻을 수 있습니다. 그러나 사용자가 삽입 한 날짜는 날짜 ("yyy-mm-dd"형식)이며 전체 프로젝트에서이 형식과이 형식을 사용합니다. 날짜 D2 = 새로운 날짜 ("2014-12-를 :java.util.Date를 org.joda.time.DateTime으로 변환하는 동안 IllegalArgumentException이 발생했습니다.

Exception in thread "main" java.lang.IllegalArgumentException 
    at java.util.Date.parse(Unknown Source) 
    at java.util.Date.<init>(Unknown Source) 
    at CalendarDemo.main(CalendarDemo.java:50) 

CalendarDemo.java:50가 참조 : 나는 그것을 실행하면

Date d1=new Date("2013-09-11"); 
     Date d2=new Date("2014-12-12"); 
     DateTime dt1 = new DateTime(d1); 
     DateTime dt2=new DateTime(d2); 
     CalculCalendar clcd=new CalculCalendar(dt1,dt2); 
     System.out.println(clcd.getNbjours(dt1, dt2)+" "+ clcd.getNbmois(dt1, dt2)+" "+ clcd.getNbyears(dt1, dt2)); 

, 나는이 오류가 : 그래서 나는이 코드를 작성 12 ");

이 형식을 변경하지 않고이 문제를 해결하는 방법은 무엇입니까?

답변

3

문제는 JDK 날짜를 Joda DateTime으로 변환하는 형식이 아닙니다. JDK Date에 문자열을 파싱하는 중입니다.

Date d2=new Date("2014-12-12"); 

은 사용되지 않는 생성자 호출입니다. 아마도 DateFormat을 사용하여 데이터 문자열을 Date으로 구문 분석하거나 parse 메서드와 비슷한 DateTimeFormatter을 사용하여 Joda의 DateTime으로 직접 구문 분석해야합니다.

이 분석 방법은

당신이 명시 적으로 기대보다는 데이터에서 형식을 알아보고 기본 Date.parse()에 따라있는 형식을 지정할 수 있습니다. 특히이 인스턴스에서 실패하는 이유는 말할 수 없습니다.하지만이 코드는 어쨌든 사용하면 안됩니다. 수년 동안은 더 이상 사용되지 않습니다.