Uszkodzenie SimpleDateFormat.parse () w nieprawidłowych datach (np. Miesiąc jest większy niż 12)
używamjava.text.SimpleDateFormat
analizować ciągi formularza"yyyyMMdd"
.
Jeśli spróbuję przeanalizować ciąg znaków z miesiącem większym niż 12, zamiast nie udać się, przechodzi do następnego roku. Pełne repro:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ParseDateTest {
public static void main(String[] args) throws ParseException {
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Date result = format.parse("20091504"); // <- should not be a valid date!
System.out.println(result); // prints Thu Mar 04 00:00:00 CST 2010
}
}
Wolałbym miećParseException
rzucony.
Czy jest jakiś niezręczny sposób wymuszenia wyjątku? To znaczy, nie chcę ręcznie sprawdzać, czy miesiąc jest większy niż 12. To śmieszne.
Dziękujemy za wszelkie sugestie.
UWAGA: Wiem już o Joda Time, ale potrzebuję tego zrobić w zwykłym JDK bez zewnętrznych bibliotek.