2017-02-23 10 views
14

ZonedDateTime("dd/MM/yyyy - hh:mm")の形式でStringに変換したいとします。私はこれがジョーダン時間他のタイプで可能であることを知っている、ちょうど彼らのtoString("dd/MM/yyyy - hh:mm")を使用して....しかし、これはZonedDateTime.toString()で動作しません。ZonedDateTimeを文字列にフォーマットする方法は?

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


EDIT:

私は別のタイムゾーンで時間を印刷しようとしましたが、結果は常に同じになるように表示されます。

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

そして、私はロスと同じタイムゾーンではないですアンヘレス。


EDIT 2:タイムゾーンを変更する方法を発見

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

がありますjdk8 java.time.ZonedDateTimeを使用していますか? – reos

+0

はい、私はそう思っています... – mFeinstein

+0

ZonedDateTimeの形式()を使用してください –

答えて

28

あなたは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)); 
+0

ありがとう!これはうまくいきます...今は、あるタイムゾーンを別のタイムゾーンに変更する方法を理解し、それに応じて印刷する方法を理解する必要があります... – mFeinstein

+0

別の質問をしてください。 – reos

+0

これは私の印象ですが、これは常に 'ZonedDateTime'それが定義したタイムゾーンですか? – mFeinstein

関連する問題