it-swarm.com.de

Wie formatiere ich eine ZonedDateTime in einen String?

Ich möchte eine ZonedDateTime in eine String im Format ("dd/MM/yyyy - hh:mm") konvertieren. Ich weiß, dass dies in Joda-Time anderen Typen möglich ist, indem lediglich deren toString("dd/MM/yyyy - hh:mm").... verwendet wird. Dies funktioniert jedoch nicht mit ZonedDateTime.toString().

Wie kann ich eine ZonedDateTime zu einer String formatieren?


BEARBEITEN:

Ich habe versucht, die Zeit in einer anderen Zeitzone zu drucken, und das Ergebnis scheint immer gleich zu sein: 

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));

Und ich bin nicht in derselben Zeitzone wie Los Angeles.


EDIT 2:

Finden Sie heraus, wie Sie die Zeitzonen ändern können:

// Change this:
ZonedDateTime date2 = date.of(date.toLocalDateTime(), la); // incorrect!
// To this:
ZonedDateTime date2 = date.withZoneSameInstant(la);
33
mFeinstein

Sie können Java.time.format.DateTimeFormatter verwenden https://docs.Oracle.com/javase/8/docs/api/Java/time/format/DateTimeFormatter.html

Hier gibt es ein Beispiel

ZonedDateTime date = ZonedDateTime.now();

System.out.println(DateTimeFormatter.ofPattern("dd/MM/yyyy - hh:mm").format(date));
54
reos

Vielen dank für oben. Hier ist es in scala wo localDateTime.now immer Zulu/UTC Zeit ist. 

import Java.time.format.DateTimeFormatter
import Java.time.LocalDateTime
import Java.time.ZoneId

val ny = ZoneId.of("America/New_York")
val utc = ZoneId.of("UTC")
val dateTime = LocalDateTime.now.atZone(utc)

val nyTime = DateTimeFormatter.
      ofPattern("yyyy-MMM-dd HH:mm z").
      format(dateTime.withZoneSameInstant(ny))
0
Tony Fraser