Próbuję parsować String
w formacie "dd-MM-yy" do obiektu Date
. Problem polega na tym, że próbuje odgadnąć wiek na datę.Jak sprawić, by DateFormat odgadł zamierzone stulecie?
Po określeniu od 01 do 31, rok jest interpretowany jako 2000s (XXI wiek), a 32 t0 99 jest uważane za lata 1900 (XX w.).
SimpleDateFormat fm =new SimpleDateFormat("dd-MM-yy");
String datestr="21-11-31";
try {
Date date= fm.parse(datestr);
System.out.println(date);
} catch (ParseException e) {
}
Czy ktoś może mi pomóc? Jak mogę określić, że pracuję tylko w 21 wieku starannie. Nie próbuję dokładnie szukać sztuczek takich jak manipulowanie ciągiem znaków lub przesuwanie daty w oparciu o warunek.
Wierzę, że jeśli chcesz, aby określić, że wszystkie terminy są w 21 wieku, jesteś rzeczywiście chyba lepiej robić głupie manipulacji ciąg off. 's/([0-9] {2} - [0-9] {2}) - ([0-9] {2})/$ 1-20 $ 2 /'. – zebediah49
Jestem ciekawy, dlaczego dane wejściowe są w formacie krótkiego roku. Czy możesz uzyskać dane wejściowe w formacie całorocznym? Inną opcją jest dodanie "20" w polu roku za pomocą wyrażeń regularnych przed analizą daty. (.replaceFirst ("- (?! -)", "-20") – nhahtdh
Wdrożyłem go tylko poprzez manipulację ciągami, tylko myślałem, że może być w ten sposób APi – Edge