ZonedDateTime
を("dd/MM/yyyy - hh:mm")
の形式のString
に変換したい。 Joda-Timeの他のタイプでは、toString("dd/MM/yyyy - hh:mm")
....を使用するだけでこれが可能であることはわかっていますが、ZonedDateTime.toString()
では機能しません。
ZonedDateTime
をString
にフォーマットするにはどうすればよいですか編集:
私は別のタイムゾーンで時間を印刷しようとしましたが、結果は常に同じように見えます:
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));
そして、私はロサンゼルスと同じタイムゾーンにいません。
編集2:
タイムゾーンを変更する方法を見つけました:
// Change this:
ZonedDateTime date2 = date.of(date.toLocalDateTime(), la); // incorrect!
// To this:
ZonedDateTime date2 = date.withZoneSameInstant(la);
Java.time.format.DateTimeFormatterを使用できます。 https://docs.Oracle.com/javase/8/docs/api/Java/time/format/DateTimeFormatter.html
ここに例があります
ZonedDateTime date = ZonedDateTime.now();
System.out.println(DateTimeFormatter.ofPattern("dd/MM/yyyy - hh:mm").format(date));
上記に感謝します。ここではscalaにあり、localDateTime.nowは常にZulu/UTC時間です。
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))