Changement de Chaîne de format de date
mon format de la date :
08/11/2008 00:00
J'ai besoin de convertir cette sortie
2008/11/08 00:00
Cependant, l'utilisation de la SimpleDateFormat comme la recherche, elle est incapable de le faire et de me donner une toute autre sortie, voici mes codes comme Suit :
SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy/MM/dd HH:mm")
Date starting= simpleDateFormat2.parse(startTime);
System.out.println("" + simpleDateFormat2.format(starting) + " real date " + startTime);
je sais que je suis dans l'analyse de la chaîne de droite étant donné que la sortie suivante se produit :
0014/05/01 00:00 real date 08/11/2008 00:00
je ne suis pas trop sûr de savoir comment le fonctionnement détecté 0014/05/01 00:00 au lieu de
2008/11/08 00:00
j'ai hâte de tous sugguestions
Merci d'avance
merci les gars! pour les suggestions!!@madprogrammer oui, cela fonctionne vraiment ! une autre chose que j'ai trouvé trop est l'utilisation de l' .setLenient de faux, mais le vôtre fonctionne parieurs
OriginalL'auteur Clement Ong | 2016-01-18
Vous devez vous connecter pour publier un commentaire.
La première chose que vous devez faire est d'analyser la valeur d'origine d'une
Date
objetUne fois que vous avez fait, vous pouvez formater la
dateValue
de toute façon que vous voulez...sorties:
La raison pour laquelle vous obtenez
0014/05/01 00:00
estSimpleDateFormat
(lors de l'utilisation deyyyy/MM/dd HH:mm
) est à l'aide de08
pour l'année,11
pour le mois et2008
pour la journée, il fait un interne de roulement des valeurs de corriger les valeurs à une date valideOriginalL'auteur MadProgrammer
C'est parce que la source de la chaîne de date vous est analysée dans un différents format de votre SimpleDateFormatter. Votre source est en
MM/dd/yyyy HH:mm
format. La chaîne dans le SimpleDateFormat àMM/dd/yyyy HH:mm
.Essayez d'utiliser un autre format, après votre premier format.
Ouais,comme une année..remarqué.merci pour elle..ahha
Ou
dd/MM/yyyyy HH:mm
, leString
valeur est ambiguOriginalL'auteur MetaSnarf
Je voudrais contribuer à la réponse moderne.
Ce imprime
La
SimpleDateFormat
classe vous avez essayé d'utilisation est dépassée depuis longtemps et notoirement difficile. Vous avez de l'expérience, mais un peu de la peine avec elle. Au lieu de cela, je suis en utilisant et en recommandantjava.time
, le moderne Java date et l'heure de l'API.Comme d'autres l'ont dit, vous devez utiliser deux formateurs, l'un pour la spécification de votre format actuel et un pour spécifier le format souhaité.
Ce qui s'est passé dans votre code?
Votre formateur avec le modèle de format de
yyyy/MM/dd HH:mm
interprété 08/11/2008 comme le 2008e jour du 11e mois de l'an 8 de l'ère commune. Il ne veut pas déranger unSimpleDateFormat
avec les paramètres par défaut qu'il y a seulement 30 jours, en novembre, il continue de comptage dans les mois et les années suivantes, de se retrouver sur une date, cinq ans et demi plus tard (2008 divisé par 365.25 est très proche de 5.5).Question: puis-je utiliser
java.time
avec ma version de Java?Si à l'aide d'au moins Java 6, vous pouvez.
org.threeten.bp
et des sous-paquets.Liens
java.time
.OriginalL'auteur Ole V.V.
Vous êtes l'analyse de la date
08/11/2008 00:00
avec le formatyyyy/MM/dd HH:mm
mais cette date n'est pas dans ce format.OriginalL'auteur tkausl