Je veux convertir un java.util.Date
objet String
en Java.
Le format est 2010-05-30 22:15:52
java
date
formatting
java.util.date
novicePrgrmr
la source
la source
Date
en 2019. Cette classe est mal conçue et dépassée depuis longtemps. Utilisez plutôtInstant
ou une autre classe de java.time, l'API Java moderne de date et d'heure .Réponses:
Convertir une date en chaîne à l' aide de la
DateFormat#format
méthode:De http://www.kodejava.org/examples/86.html
la source
Calendar
au lieu de plainenew Date()
? Y a-t-il une différence?MM/dd/yyyy
format est stupide et cassé. Ne l'utilise pas. Utilisez toujoursdd/MM/yyyy
ouyyyy-MM-dd
.yyyy-MM-dd
partout, mais que pouvez-vous faire?).la source
Commons-lang DateFormatUtils est plein de goodies (si vous avez commons-lang dans votre chemin de classe)
la source
null
vérification supplémentaire .tl; dr
java.time
La méthode moderne consiste à utiliser les classes java.time qui supplantent désormais les anciennes classes de date-heure héritées.
Convertissez d'abord votre fichier
java.util.Date
en unInstant
. LaInstant
classe représente un moment sur la timeline en UTC avec une résolution de nanosecondes (jusqu'à neuf (9) chiffres d'une fraction décimale).Les conversions vers / depuis java.time sont effectuées par de nouvelles méthodes ajoutées aux anciennes classes.
Les deux votre
java.util.Date
etjava.time.Instant
sont en UTC . Si vous voulez voir la date et l'heure en UTC, qu'il en soit ainsi. AppeleztoString
pour générer une chaîne au format standard ISO 8601 .Pour les autres formats, vous devez transformer votre
Instant
en le plus flexibleOffsetDateTime
.Découvrez ce code en direct sur IdeOne.com .
Pour obtenir une chaîne au format souhaité, spécifiez a
DateTimeFormatter
. Vous pouvez spécifier un format personnalisé. Mais j'utiliserais l'un des formateurs prédéfinis (ISO_LOCAL_DATE_TIME
) et remplacerais leT
dans sa sortie par un ESPACE.Soit dit en passant, je ne recommande pas ce type de format où vous perdez volontairement les informations de décalage par rapport à UTC ou de fuseau horaire. Crée une ambiguïté quant à la signification de la valeur date-heure de cette chaîne.
Méfiez-vous également de la perte de données, car toute fraction de seconde est ignorée (effectivement tronquée) dans la représentation de votre chaîne de la valeur date-heure.
Pour voir ce même moment à travers l'objectif de l' heure d'une horloge murale d'une région particulière , appliquez a
ZoneId
pour obtenir aZonedDateTime
.Pour générer une chaîne formatée, faites la même chose que ci-dessus mais remplacez
odt
parzdt
.Si vous exécutez ce code un très grand nombre de fois, vous voudrez peut-être être un peu plus efficace et éviter l'appel à
String::replace
. La suppression de cet appel raccourcit également votre code. Si vous le souhaitez, spécifiez votre propre modèle de mise en forme dans votre propreDateTimeFormatter
objet. Mettez cette instance en cache en tant que constante ou membre pour la réutiliser.Appliquez ce formateur en passant l'instance.
À propos de java.time
Le framework java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les classes date de temps anciens gênants tels que
java.util.Date
,.Calendar
, etjava.text.SimpleDateFormat
.Le projet Joda-Time , désormais en mode maintenance , conseille la migration vers java.time.
Pour en savoir plus, consultez le didacticiel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications.
Une grande partie de la fonctionnalité java.time est rétroportée vers Java 6 et 7 dans ThreeTen-Backport et adaptée à Android dans ThreeTenABP (voir Comment utiliser… ).
Le projet ThreeTen-Extra étend java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour de futurs ajouts possibles à java.time.
la source
Z
est utilisé à la place de+00:00
par défaut. J'ai fixé la réponse, merci. Pour info, cela signifie la même chose:Z
prononcé «zoulou» signifie un décalage de zéro heure-minute-seconde, le même que+00:00
. La norme ISO 8601 prend en charge les deux styles.atOffset
méthode sur laInstant
classe en Java 8. Voir Javadoc:Instant::atOffset
. Dans Java 8, un appel similaireInstant.now().atOffset( ZoneOffset.UTC ).toString()
sera exécuté. Vérifiez vosimport
relevés. Vérifiez que votre IDE / projet est configuré pour exécuter Java 8 ou une version ultérieure plutôt qu'une version antérieure de Java. Voir le code en direct sur IdeOne.com: ideone.com/2Vm2O5One-liners alternatifs en java simple:
Cela utilise Formatter et l'indexation relative au lieu de
SimpleDateFormat
ce qui n'est pas thread-safe , btw.Un peu plus répétitif mais n'a besoin que d'une seule déclaration. Cela peut être pratique dans certains cas.
la source
Pourquoi n'utilisez-vous pas Joda (org.joda.time.DateTime)? Il s'agit essentiellement d'un vol simple.
la source
DateTime
objet.new DateTime( currentDate , DateTimeZone.forID( "America/Montreal" ) )
Il semble que vous recherchiez SimpleDateFormat .
Format: aaaa-MM-jj kk: mm: ss
la source
HH
(0-23) est plus courant.En un seul coup;)
Pour obtenir la date
Pour avoir le temps
Pour obtenir la date et l'heure
Bon codage :)
la source
java.util.Date
,java.util.Calendar
etjava.text.SimpleDateFormat
sont désormais héritées , supplantées par les classes java.time intégrées à Java 8 et Java 9. Voir Tutorial by Oracle .la source
La façon la plus simple de l'utiliser est la suivante:
où "aaaa-MM-jj'T'HH: mm: ss" est le format de la date de lecture
sortie: dim 14 avril 16:11:48 EEST 2013
Remarques: HH vs hh - HH se réfère au format d'heure 24h - hh se réfère au format d'heure 12h
la source
Si vous avez seulement besoin de l'heure à partir de la date, vous pouvez simplement utiliser la fonctionnalité de String.
Cela réduira automatiquement la partie temporelle de la chaîne et l'enregistrera dans le
timeString
.la source
Voici des exemples d'utilisation de la nouvelle API Java 8 Time pour formater l' héritage
java.util.Date
:Il est agréable de
DateTimeFormatter
pouvoir le mettre en cache efficacement car il est thread-safe (contrairementSimpleDateFormat
).Liste de formateurs prédéfinis et référence de notation de modèle .
Crédits:
Comment analyser / formater des dates avec LocalDateTime? (Java 8)
Conversion de Java8 java.util.Date en java.time.ZonedDateTime
Format instantané en chaîne
Quelle est la différence entre java 8 ZonedDateTime et OffsetDateTime?
la source
Essaye ça,
Production:
Pour plus d'informations sur le formatage de la date et de l'heure en java, reportez-vous aux liens ci-dessous
Centre d'aide Oracle
Exemple de date et d'heure en Java
la source
la source
Essayons ça
Ou une fonction utilitaire
De convertir la date en chaîne en Java
la source
la source
la source
Option d'une ligne
Cette option obtient une ligne simple pour écrire la date réelle.
la source
java.util.Date
,java.util.Calendar
etjava.text.SimpleDateFormat
sont désormais héritées , supplantées par les classes java.time intégrées à Java 8 et versions ultérieures. Voir Tutoriel par Oracle .2019-20-23 09:20:22
- le mois 20 ??) (2) Je ne vois pas que la réponse fournit quelque chose qui n'est pas déjà couvert dans d'autres réponses. (3) Veuillez ne pas enseigner aux jeunes à utiliser laSimpleDateFormat
classe dépassée et notoirement gênante . Du moins pas comme première option. Et non sans aucune réserve. Aujourd'hui, nous avons tellement mieuxjava.time
, l'API moderne de date et d'heure Java, et sesDateTimeFormatter
.