Je veux convertir String
à Date
différents formats.
Par exemple,
Je reçois de l'utilisateur,
String fromDate = "19/05/2009"; // i.e. (dd/MM/yyyy) format
Je souhaite le convertir fromDate
en objet Date de "yyyy-MM-dd"
format
Comment puis-je faire ceci?
Réponses:
Jetez un œil à
SimpleDateFormat
. Le code ressemble à ceci:la source
Date
format?parse
et ne continuez pasformat
.parse
analyse une chaîne à une date.parse
me donnedate format
commeFri Jan 06 00:01:00 EST 2012
mais il en a besoin au2012-01-06
format de dateSystem.out.println(anyDateObject)
la méthode par défaut toString () est appelée qui a été dite imprimer dans ce format, par exempleFri Jan 06 00:01:00 EST 2012
. Vous devez le remplacer pour répondre à vos besoins.java.util.Date
,java.util.Calendar
etjava.text.SimpleDateFormat
sont maintenant héritées , supplantées par les classes java.time intégrées à Java 8 et Java 9. Voir le didacticiel d'Oracle .tl; dr
Détails
Les autres réponses avec
java.util.Date
,java.sql.Date
etSimpleDateFormat
sont maintenant dépassées.LocalDate
La façon moderne de faire date-heure est de travailler avec les classes java.time, en particulier
LocalDate
. LaLocalDate
classe représente une valeur de date uniquement sans heure du jour et sans fuseau horaire.DateTimeFormatter
Pour analyser ou générer une chaîne représentant une valeur date-heure, utilisez la
DateTimeFormatter
classe.Ne confondez pas un objet date-heure avec une chaîne représentant sa valeur. Un objet date-heure n'a pas de format , contrairement à une chaîne. Un objet date-heure, tel que
LocalDate
, peut générer une chaîne pour représenter sa valeur interne, mais l'objet date-heure et la chaîne sont des objets distincts distincts.Vous pouvez spécifier n'importe quel format personnalisé pour générer une chaîne. Ou laissez java.time faire le travail de localisation automatique.
Dump dans la console.
Voir en action sur IdeOne.com .
À propos de java.time
Le framework java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciens gênants hérités des classes date-heure tels que
java.util.Date
,Calendar
, etSimpleDateFormat
.Le projet Joda-Time , désormais en mode maintenance , conseille la migration vers les classes java.time .
Pour en savoir plus, consultez le didacticiel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .
Vous pouvez échanger des objets java.time directement avec votre base de données. Utilisez un pilote JDBC compatible avec JDBC 4.2 ou version ultérieure. Pas besoin de chaînes, pas besoin de
java.sql.*
classes.Où obtenir les classes java.time?
Le projet ThreeTen-Extra étend java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels futurs ajouts à java.time. Vous trouverez peut - être des classes utiles ici, comme
Interval
,YearWeek
,YearQuarter
et plus .la source
Utilisez la
SimpleDateFormat
classe:Usage:
Pour plus d'efficacité, vous voudrez stocker vos formateurs dans un hashmap. Le hashmap est un membre statique de votre classe util.
la source
Convertir une date de chaîne en java.sql.Date
la source
Vérifiez les javadocs car
java.text.SimpleDateFormat
il décrit tout ce dont vous avez besoin.la source
Bien que
SimpleDateFormat
cela fonctionne en effet pour vos besoins, vous voudrez peut-être également consulter Joda Time , qui est apparemment la base de la bibliothèque de dates refaite en Java 7. Bien que je ne l'utilise pas beaucoup, je n'ai entendu que de bonnes choses à ce sujet et si vous manipulez des dates en profondeur dans vos projets, cela vaudrait probablement la peine d'être examiné.la source
Un moyen simple de formater une date et de la convertir en chaîne
la source
Un
Date
objet n'a pas de format , c'est une représentation. La date peut être présentée par unString
avec le format que vous aimez .Par exemple, "
yyyy-MM-dd
", "yy-MMM-dd
", "dd-MMM-yy
" et etc.Pour y parvenir, vous pouvez utiliser le
SimpleDateFormat
Essaye ça,
Ce produit: 2009-05-19
la source
Supposons que vous ayez une chaîne comme celle-ci:
Maintenant, nous voulons changer ce
String
format de date et d'heure séparés dans Java et Kotlin .JAVA:
nous avons une méthode pour la date d' extrait :
Return
est-ce: 17/09/2019Et nous avons une méthode pour le temps d' extraction :
Return
est-ce: 10:56 AMKOTLIN:
nous avons une fonction pour la date d' extrait :
Return
est-ce: 17/09/2019Et nous avons une méthode pour le temps d' extraction :
Return
est-ce: 10:56 AMla source
SimpleDateFormat
classe depuis longtemps obsolète et notoirement gênante . Du moins pas comme première option. Et pas sans aucune réserve. Aujourd'hui, nous avons tellement mieux avecjava.time
l'API de date et d'heure Java moderne, et sesDateTimeFormatter
. AussiSimpleDateFormat
ne peut pas analyser 6 décimales sur les secondes (microsecondes) correctement.10:56 AM
que vous dites que je devrais, mais à la place11:09 AM
(testé sur Oracle jdk-11.0.3).DateTimeFormatter
nous ayons besoin deminsdk 26
ou plus, ce n'est pas une bonne chose10:56 AM