Chcę sprawdzać poprawność i parsować daty przy użyciu simpleDateFormat z formatem "rrrymmdd" Pozwala to również na 100624, który jest analizowany do 10 roku (54 lata po śmierci Juliusa Cezara). Daty będą również takie jak 1970, więc nie chcę się dogadać z SimpleDateFornat ("yymmdd").wymuszając 4 cyfry roku w jaime's simpledateformat
Zastanawiam się, czy istnieje sposób na wymuszenie czterocyfrowego formatu w formacie SimpleDateFormat? Jestem blisko zrobić test regexp z góry, ale może istnieje sprytny sposób korzystania z (Simple) DateFormat()?
Zgodnie z żądaniem kodu sprawy stają się coraz bardziej skomplikowane, a moje badania były o połowę mniejsze. Użyty format to rrrr-MM-dd (pochodzi on ze zmiennej, która miała nieprawidłowe javadoc). Jednak jak wskazano w odpowiedzi poniżej rrrrMMdd wymusza czteroletnią cyfrę. Moje pytanie zostało zmienione na "Jak wymusić czterocyfrowy rok dla formatu" rrrr-MM-dd ". I dlaczego "yyyyMMdd" zachowuje się inaczej?
public void testMaturity() {
try {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
System.out.println(" " + sdf.format(sdf.parse("40-12-14")));
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyyMMdd");
sdf.setLenient(false);
System.out.println(" " + sdf2.format(sdf2.parse("401214")));
fail();
} catch (ParseException pe) {
assertTrue(true);
}
która drukuje 0040-12-14
Jeśli data wymaga rrrrmmdd wtedy lat 10 będzie 0010.Nie widzę w tym żadnego problemu, nie pozwalasz im wpisać 1 przez pierwszy dzień (01) lub przez pierwszy miesiąc, więc po co pozwalać na to przez lata. – Goibniu