Comment formater un ZonedDateTime à une chaîne?

Je veux convertir un ZonedDateTime pour un String dans le format ("dd/MM/yyyy - hh:mm"). Je sais que c'est possible dans D'autres types de Joda-Time, en utilisant simplement leur toString("dd/MM/yyyy - hh:mm")....Mais cela ne fonctionne pas avec ZonedDateTime.toString().

Comment puis-je formater un ZonedDateTime pour un String?


Modifier:

J'ai essayé d'imprimer l'heure dans un autre fuseau horaire et le résultat semble être le même toujours:

ZonedDateTime date = ZonedDateTime.now();
ZoneId la = ZoneId.of("America/Los_Angeles");
ZonedDateTime date2 = date.of(date.toLocalDateTime(), la);

// 24/02/2017 - 04:53
System.out.println(DateTimeFormatter.ofPattern("dd/MM/yyyy - hh:mm").format(date));
// same result as the previous one
// 24/02/2017 - 04:53
System.out.println(DateTimeFormatter.ofPattern("dd/MM/yyyy - hh:mm").format(date2));

Et je ne suis pas dans le même fuseau horaire que Los Angeles.


Édition 2:

Trouvé comment changer les fuseaux horaires:

// Change this:
ZonedDateTime date2 = date.of(date.toLocalDateTime(), la); // incorrect!
// To this:
ZonedDateTime date2 = date.withZoneSameInstant(la);
23
demandé sur Meno Hochschild 2017-02-23 23:17:42

1 réponses

Vous pouvez utiliser java.temps.format.DateTimeFormatter. https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html

Voici un exemple

ZonedDateTime date = ZonedDateTime.now();

System.out.println(DateTimeFormatter.ofPattern("dd/MM/yyyy - hh:mm").format(date));
43
répondu reos 2017-02-23 20:27:09