apache DateUtils: analyse d'une date avec plusieurs modèles
Je veux analyser une date qui a potentiels différents formats à l'aide de DateUtils.parseDate
. Il semble qu'il utilise le premier analyseur, même si il doit détecter la différence entre 23/10/2014
et 2014/10/23
.
Il fait analyse le jour même si elle est erronée, de sorte que je ne peux même pas attraper une exception. Comment puis-je faire? Est-ce un bug? (commons-lang3-3.3.2)
Voici un extrait de code
package snippet;
import java.text.ParseException;
import java.util.Date;
import org.apache.commons.lang3.time.DateUtils;
public class TestDateFormat {
public static void main(String[] args) throws ParseException {
Date d = DateUtils.parseDate("23/10/2014T12:34:22",
new String[] {"yyyy/MM/dd'T'HH:mm:ss",
"dd/MM/yyyy'T'HH:mm:ss"});
System.out.println(d);
//returns Tue Apr 05 12:34:22 CET 29 which is wrong
}
}
OriginalL'auteur dao hodac | 2014-11-03
Vous devez vous connecter pour publier un commentaire.
Vous devez utiliser
DateUtils.parseDateStrictly
:DateUtils#parseDateStrictly
En interne, ce qu'il fait est la mise à
false
lalenient
attribut de laDateFormat
utilisé: DateFormat.html#setLenientExemple:
Vous êtes les bienvenus!
Toutes les raisons pour lesquelles parseDateStrictly() ne marche pas analyser format "MM/jj/aaaa hh:mm:ss". si parseDate() fonctionne pour le format "jj/MM/aaaa hh:mm:ss".
Il n'. Ce code fonctionne très bien
System.out.println(DateUtils.parseDateStrictly("04/05/2003:10:15:16", "MM/dd/yyyy:hh:mm:ss"));
. Je pense que c'est une question de données d'entrée. Notez queh
signifie "Heure am/pm (1-12)". Si ça ne fonctionne pas pour vous, alors vous pouvez ouvrir une nouvelle question en expliquant votre problème.oui je l'ai compris plus tard, j'ai été en passant du temps en 24 format de l'horloge pour lesquelles je devrais avoir utilisé HH au lieu de hh c'est pourquoi il n'a pas de travail.Merci
OriginalL'auteur Tobías