이 함수에 잘못된 날짜가 전달되고 IllegalFieldValueExcption이 throw되면 기본 날짜 인 0001-01-01
을 반환하고 싶습니다. 그러나 아래 코드가 실행될 때 defaultDate
에 생성 된 날짜는 0001-01-02
입니다. 이는 잘못된 것입니다. 아무도 내가 뭘 잘못 보는거야?구문 분석 날짜 01-01-0001과 jodatime
public Date unmarshal(String string) {
DateTimeFormatter fmt = new DateTimeFormatter(null, DateTimeFormat.forPattern("yyyy-MM-dd").getParser());
Date defaultDate = DateTime.parse("0001-01-01", fmt).toDate();
try {
return formatter.parseDateTime(string).toDate();
}
catch (IllegalFieldValueException e) {
return defaultDate;
}
}
편집 :
나는이와 처음 두 행을 업데이트하고 완벽 지금 노력하고 있습니다, 감사합니다! Joda 타임에서 기본 chronology는 ISO이기 때문에
Chronology chrono = GJChronology.getInstance();
Date defaultDate = new DateTime(0001, 01, 01, 10, 0, 0, 0, chrono).toDate();
+1. "0001-01-01의 기본 날짜를 반환하려면"(jodatime 또는 not) 나쁜 냄새가납니다. 대신 null을 반환하는 것이 더 좋을까요? – leonbloy
0001-01-01은 우리 시스템에 사용되는 '낮은 날짜'입니다. 생성하지 않았습니다. 단지 필요한 것일뿐입니다. –
이것은 Oracle 데이터베이스의 null이 아닌 낮은 날짜에 대한 꽤 일반적인 날짜 값이기도합니다 –