J'ai un String
représentant une date.
String date_s = "2011-01-18 00:00:00.0";
Je voudrais le convertir en un Date
et le sortir au YYYY-MM-DD
format.
2011-01-18
Comment puis-je atteindre cet objectif?
D'accord, sur la base des réponses que j'ai récupérées ci-dessous, voici quelque chose que j'ai essayé:
String date_s = " 2011-01-18 00:00:00.0";
SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
Date date = dt.parse(date_s);
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
System.out.println(dt1.format(date));
Mais il sort 02011-00-1
au lieu du souhaité 2011-01-18
. Qu'est-ce que je fais mal?
java
string
date
formatting
date-format
amit4444
la source
la source
Réponses:
Utilisez
LocalDateTime#parse()
(ouZonedDateTime#parse()
si la chaîne contient une partie de fuseau horaire) pour analyser aString
dans un certain modèle en aLocalDateTime
.Utilisez
LocalDateTime#format()
(ouZonedDateTime#format()
) pour formater unLocalDateTime
dans unString
dans un certain modèle.Ou , lorsque vous n'êtes pas encore sur Java 8, utilisez
SimpleDateFormat#parse()
pour analyser aString
dans un certain modèle en aDate
.Utilisez
SimpleDateFormat#format()
pour formater unDate
dans unString
dans un certain modèle.Voir également:
Mise à jour : selon votre tentative échouée: les modèles sont sensibles à la casse . Lisez le
java.text.SimpleDateFormat
javadoc ce que représentent les différentes pièces. Il en est ainsi par exempleM
des mois etm
des minutes. De plus, il existe des années à quatre chiffresyyyy
et non à cinqyyyyy
. Regardez de plus près les extraits de code que j'ai publiés ci-dessus.la source
Le formatage est SENSIBLE À LA CASE donc UTILISEZ MM pour le mois et non pour le mm (c'est pour la minute) et yyyy Pour référence, vous pouvez utiliser la feuille de triche suivante.
Exemples:
la source
La réponse est bien sûr de créer un objet SimpleDateFormat et de l'utiliser pour analyser les chaînes en date et formater les dates en chaînes. Si vous avez essayé SimpleDateFormat et que cela n'a pas fonctionné, veuillez montrer votre code et toutes les erreurs que vous pourriez recevoir.
Addendum: "mm" au format String n'est pas le même que "MM". Utilisez MM pour les mois et mm pour les minutes. De plus, aaaa n'est pas la même chose que aaaa. par exemple,:
la source
hh
vous donnera l'heure dans la plage 1-12, vous devrez utilisera
en plus d'imprimer / analyserAM
ouPM
. Pour imprimer / analyser l'heure dans la plage 0-23, utilisezHH
.Pourquoi ne pas simplement l'utiliser
C'est aussi l'autre façon:
ou
À votre santé!
la source
Utilisation du
java.time
package dans Java 8 et versions ultérieures:la source
[édité pour inclure les corrections de BalusC] La classe SimpleDateFormat devrait faire l'affaire:
la source
DD
signifie "jour dans l'année", pas "jour dans le mois".hh
signifie "heure en am / pm (1-12)", pas "heure en jour (0-23)".Les autres réponses sont correctes, fondamentalement, vous aviez le mauvais nombre de caractères "y" dans votre modèle.
Fuseau horaire
Encore un problème… Vous n'avez pas abordé les fuseaux horaires. Si vous vouliez UTC , vous auriez dû le dire. Sinon, les réponses ne sont pas complètes. Si tout ce que vous voulez c'est la partie date sans l'heure, alors pas de problème. Mais si vous effectuez d'autres travaux qui peuvent impliquer du temps, vous devez alors spécifier un fuseau horaire.
Joda-Time
Voici le même type de code mais en utilisant la bibliothèque Joda-Time 2.3 open source tierce
Lors de l'exécution ...
la source
Veuillez consulter «Modèles de date et d'heure» ici. http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
la source
la source
la source
la source
Vous pouvez simplement utiliser:
Ça marche parfaitement!
la source
Vous pouvez également utiliser substring ()
Si vous voulez un espace devant la date, utilisez
la source
Vous pouvez essayer Java 8 nouveau
date
, plus d'informations peuvent être trouvées sur la documentation Oracle .Ou vous pouvez essayer l'ancien
la source
la source
supprimer un formulaire y
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
doit êtreSimpleDateFormat dt1 = new SimpleDateFormat("yyyy-mm-dd");
la source
DateTimeFormatter
ou que vous vous accrochiez au dépasséSimpleDateFormat
).SimpleDateFormat dt1 = nouveau SimpleDateFormat ("aaaa-mm-jj");
la source
DateTimeFormatter
etDateTimeFormatterBuilder
. SuggérerSimpleDateFormat
en 2019 est un mauvais conseil.hh
est pour l'heure.Dites que vous voulez changer 2019-12-20 10:50 AM GMT + 6: 00 à 2019-12-20 10:50 AM vous devez d'abord comprendre le format de date le premier format de date est aaaa-MM-jj hh : mm a zzz et le deuxième format de date sera aaaa-MM-jj hh: mm a
il suffit de retourner une chaîne de cette fonction comme.
Cette fonction renverra votre réponse désirée. Si vous souhaitez personnaliser davantage, ajoutez ou supprimez simplement un composant du format de date.
la source