web-dev-qa-db-ja.com

ZonedDateTimeを文字列にフォーマットする方法は?

ZonedDateTime("dd/MM/yyyy - hh:mm")の形式のStringに変換したい。 Joda-Timeの他のタイプでは、toString("dd/MM/yyyy - hh:mm")....を使用するだけでこれが可能であることはわかっていますが、ZonedDateTime.toString()では機能しません。

ZonedDateTimeStringにフォーマットするにはどうすればよいですか


編集:

私は別のタイムゾーンで時間を印刷しようとしましたが、結果は常に同じように見えます:

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

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

上記に感謝します。ここでは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))
0
Tony Fraser