tl; dr
LocalDateTime ldt = LocalDateTime.parse("2009-08-19 12:00:00".replace(" " , "T"));
java.time
D'autres réponses sont correctes, mais utiliser des classes date temps anciens. Ces anciennes classes gênantes ont été supplantées par les classes java.time.
Votre chaîne d'entrée est proche du format standard ISO 8601. Tweak en remplaçant l'espace au milieu avec un T
. Ensuite, il peut être analysé sans spécifier de modèle de formatage. Les classes java.time utilisent ISO 8601 par défaut lors de l'analyse/génération de chaînes. Les données d'entrée n'a aucune information sur offset-from-UTC ou le fuseau horaire. Nous analysons donc comme LocalDateTime
.
LocalDateTime ldt = LocalDateTime.parse(input);
Si le contexte vous indique le décalage souhaité, appliquez-le. Peut-être qu'il était destiné à UTC (un décalage de zéro), où nous pouvons utiliser la constante ZoneOffset.UTC
.
OffsetDateTime odt = ldt.atOffset(ZoneOffset.UTC);
Ou peut-être savez-vous qu'il était destiné à un fuseau horaire particulier. Un fuseau horaire est un décalage plus un ensemble de règles pour gérer les anomalies telles que l'heure d'été (DST).
ZonedDateTime zdt = ldt.atZone(ZoneId.of("America/Montreal"));
A propos java.time
Le cadre java.time est construit en Java 8 et versions ultérieures. Ces classes remplacent les anciennes classes de date-heure gênantes telles que java.util.Date
, .Calendar
, & java.text.SimpleDateFormat
.
Le projet Joda-Time, maintenant dans maintenance mode, conseille la migration vers java.time.
Pour en savoir plus, voir le Oracle Tutorial. Et recherchez Stack Overflow pour de nombreux exemples et explications.
Une grande partie de la fonctionnalité de java.time est à nouveau porté à Java-6 & 7 dans ThreeTen-Backport et en outre adapté pour Android en ThreeTenABP (voir How to use…).
Le projet ThreeTen-Extra étend java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels ajouts futurs à java.time.
J'aimerais que les gens cessent d'appeler les choses «bizarres» et «bizarres» quand ils font des erreurs. :/ – Bombe
Désolé. Je déboguais du code que quelqu'un de mes nombreuses années avait écrit, et je m'attendais à pouvoir faire confiance. –