Sto cercando di analizzare un formato String
in formato "gg-MM-aa" su un oggetto Date
. Il problema è che cerca di indovinare il secolo per la data.Come rendere DateFormat indovinato secolo inteso?
Se specificato da 01 a 31, l'anno viene interpretato come anni 2000 (21 ° secolo) e 32 t0 99 è considerato 1900 (XX secolo).
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) {
}
Qualcuno può aiutarmi? Come posso specificare che sto lavorando solo nel 21 ° secolo in modo ordinato. Non sto cercando esattamente trucchi come manipolare la stringa o spostare la data in base alla condizione.
Credo che se si desidera specificare che tutte le date nel 21 ° secolo, si è in realtà probabilmente meglio fare una manipolazione delle stringhe stupido. 'S/([0-9] {2} - [0-9] {2}) - ([0-9] {2})/$ 1-20 $ 2 /'. – zebediah49
Sono curioso di sapere perché l'input è in formato short year. Riesci a ottenere l'input nel formato di un anno lungo? Un'altra opzione è aggiungere "20" nel campo dell'anno usando espressioni regolari prima di analizzare la data. (.replaceFirst ("- (?! -)", "-20") – nhahtdh
L'ho implementato solo con la manipolazione delle stringhe. Pensavo ci potesse essere un modo di farlo api – Edge