forçant 4 chiffres année dans le format simplifié de Java
Je veux valider et analyser les dates à l'aide d'un simpleDateFormat avec le format "aaaammjj"
Cela permet également de 100624, qui est analysée à l'année 10 (54 ans après Jules César est mort). Les dates seront aussi quelque chose comme 1970, donc je ne veux pas s'installer avec SimpleDateFornat("aammjj").
Je me demandais est-il un moyen de forcer une année sur quatre chiffres format à l'aide de la SimpleDateFormat? Je suis près à faire une regexp test initial, mais peut-être il ya une façon intelligente d'utiliser le (Simple)DateFormat()?
Comme l'a demandé le code, les choses deviennent de plus en plus compliquer et ma recherche a été la moitié. Le Format utilisé est aaaa-MM-jj (c'est une variable, qui avait un mauvais javadoc). Cependant, comme indiqué dans la réponse ci-dessous aaaammjj ne force pas un quatre ans les chiffres. Donc ma question est modifiée de la Façon de forcer une année à quatre chiffres pour le "aaaa-MM-jj". Et pourquoi ne "aaaammjj" se comportent-ils différents?
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);
}
Qui imprime 0040-12-14
source d'informationauteur dr jerry
Vous devez vous connecter pour publier un commentaire.
Simplement utiliser
yyyyMMdd
(remarque: le haut-cas M est utilisé pour indiquer le mois, sinon vous êtes l'analyse minutes!) et puis vérifier si l'année est supérieure à un seuil date (par exemple, lors de l'analyse des dates de naissance, plus de 1800 est un pari sûr, lors de l'analyse des dates pour dater les dates supérieure ou égale à l'année en cours serait bien).Hmm. Je soupçonne que vous devriez être à l'aide de "MM" au lieu de "mm" pour commencer... mais "100624" ne pas analyser de toute façon quand je l'ai essayer elle - même dans clémente mode:
(Et même à l'aide de "mm" au lieu de "MM" encore ne parvient pas à analyser.)
Imprime:
Peut-être que vous pourriez montrer le code qui est la gestion d'analyser ce?
Essayez d'appeler
setLenient(false);
sur leSimpleDateFormat
objet qui permettra de faire une utilisation plus stricte des règles pour l'analyse (sinon il va essayer d'être "smart" si la chaîne d'entrée ne correspond pas exactement au format). Par exemple:Et, bien sûr, des mois est
MM
pasmm
.Il n'y a pas de moyen facile pour cela. Si vous êtes en train de dire que les dates peuvent être comme des années 1970, la principale question serait ce que 700624 moyen - 1970 ou 2070? Vous devez soit mettre en œuvre certaines à la date butoir comme Joachim proposé ou déplacer entièrement à 4 chiffres de l'année.
Eh bien, il est tout à fait droites et vers l'avant. Suivez ces étapes simples:
Étape 1:
Ce sera de sortie: