J'ai une date sous forme de chaîne au format suivant "04/02/2011 20:27:05"
. J'utilise la bibliothèque Joda-Time et je voudrais la convertir en DateTime
objet. J'ai fait:
DateTime dt = new DateTime("04/02/2011 20:27:05")
Mais j'obtiens l'erreur suivante:
Invalid format: "04/02/2011 14:42:17" is malformed at "/02/2011 14:42:17"
Comment convertir la date ci-dessus en DateTime
objet?
java.time
package dans Java 8, essayez d'utiliserLocalDateTime.parse
ouInstant.parse
.Réponses:
Utilisation
DateTimeFormat
:la source
toString
fonction, mais je ne peux pas analyser de lui:Invalid format: "31. Januar 2013 06:38:08 MEZ" is malformed at "MEZ"
. est-ce un problème connu? Comment puis-je l'éviter? Cordialement.Je sais que c'est une vieille question, mais je voulais ajouter que, depuis JodaTime 2.0, vous pouvez le faire avec un one-liner:
la source
la source
Parmi les commentaires, j'ai choisi une réponse comme et en ajoutant également TimeZone:
la source
Votre format n'est pas le format ISO attendu, vous devriez essayer
la source
Vous pouvez également utiliser SimpleDateFormat , comme dans
DateTimeFormat
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 . Et les classes java.time sont thread-safe, contrairement aux classes héritées.Vous avez besoin d'un DateTimeFormatter approprié au format que vous utilisez. Jetez un œil aux documents pour savoir comment en créer un.
Je pense que tu as besoin
format = DateTimeFormat.forPattern("M/d/y H:m:s")
la source
tl; dr
java.time
L'approche moderne utilise les classes java.time qui supplantent le vénérable Joda-Time projet .
Analyser aussi
LocalDateTime
car votre entrée n'a aucun indicateur de fuseau horaire ou de décalage par rapport à UTC.Conseil: Dans la mesure du possible, utilisez les formats ISO 8601 standard lors de l'échange de valeurs date-heure sous forme de texte plutôt que dans le format affiché ici. De manière pratique, les classes java.time utilisent les formats standard lors de l'analyse / génération de chaînes.
À 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 java.time classes .
Pour en savoir plus, consultez le didacticiel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .
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 de futurs ajouts possibles à java.time. Vous trouverez peut - être des classes utiles ici, comme
Interval
,YearWeek
,YearQuarter
et plus .la source
Une méthode simple:
la source
Il y a deux façons d' y parvenir .
DateTimeFormat
SimpleDateFormat
la source
SimpleDateFormat
est notoirement mauvais à mon avis le plus honnête.