J'utilise JodaTime pour obtenir la date et l'heure de création d'un compte. Le format étant

2017-04-05T12:38:35.585

Lorsque j'obtiens cela, je le stocke dans ma base de données sous forme de chaîne.J'ai donc cherché des moyens de le formater d'une chaîne à LocalDate, mais je n'ai pas réussi dans tout ce que j'ai trouvé en ligne. Ma prochaine étape est une solution horrible à mon avis pour parcourir la chaîne jusqu'à ce que je trouve le T et que je supprime tout ce qui suit. Alors je reste avec

2017-04-05. 

Mais idéalement, si possible, indiquez la date

05/04/2017
3
Dannys 5 avril 2017 à 21:19

2 réponses

Meilleure réponse

Utilisez le ISODateTimeFormat pour obtenir un LocalDateTime et à partir de là, obtenez le LocalDate. Veillez à utiliser le bon Locale

String input="2017-04-05T12:38:35.585";

LocalDateTime ldt = ISODateTimeFormat.localDateOptionalTimeParser()
                    .withLocale(Locale.ENGLISH)
                    .parseLocalDateTime(input);

System.out.println(ldt.toLocalDate());//prints 2017-04-05
3
Jérôme 5 avril 2017 à 18:32

J'utilise joda-time 2.7 .

La classe LocalDateTime a un constructeur qui prend un String et l’analyse. Ensuite, vous appelez simplement la méthode toString() avec le modèle souhaité:

String input = "2017-04-05T12:38:35.585";
LocalDateTime d = new LocalDateTime(input);
System.out.println(d.toString("dd/MM/yyyy"));

Production:

05/04/2017

Remarque : vous pouvez également utiliser ISODateTimeFormat pour analyser et DateTimeFormatter au lieu de toString() pour obtenir le résultat:

LocalDateTime d = ISODateTimeFormat.localDateOptionalTimeParser().parseLocalDateTime(input);
DateTimeFormatter fmt = DateTimeFormat.forPattern("dd/MM/yyyy");
System.out.println(fmt.print(d));

La sortie sera la même.

3
user7605325user7605325 5 avril 2017 à 19:24