Si cette fonction est passée une date non valide et un IllegalFieldValueExcption est levée, je voudrais retourner une date par défaut de 0001-01-01
. Mais lorsque le code ci-dessous est exécuté, la date créée dans defaultDate
est 0001-01-02
, ce qui est faux. Est-ce que quelqu'un voit quelque chose que je fais mal?date d'analyse 01-01-0001 avec 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;
}
}
EDIT:
Je mis à jour les deux premières lignes avec ces derniers et il fonctionne maintenant parfait, merci!
Chronology chrono = GJChronology.getInstance();
Date defaultDate = new DateTime(0001, 01, 01, 10, 0, 0, 0, chrono).toDate();
+1. "renvoyer une date par défaut de 0001-01-01" sent mauvais (jodatime ou non). peut-être préférable de retourner 'null' à la place? – leonbloy
0001-01-01 est la «date basse» utilisée pour notre système, je n'ai pas créé cela, c'est juste ce qu'il doit être. –
Il s'agit également d'une valeur de date assez courante pour les dates faibles non nulles dans la base de données Oracle –