2017-02-23 26 views
14

我想將ZonedDateTime轉換爲String,格式爲("dd/MM/yyyy - hh:mm")。我知道這是可能的Joda時間其他類型,只需使用他們的toString("dd/MM/yyyy - hh:mm") ....但這不適用於ZonedDateTime.toString()如何將ZonedDateTime格式化爲字符串?

如何將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); 
+0

您使用jdk8 java.time.ZonedDateTime? – reos

+0

是的,我認爲是這樣的... – mFeinstein

+0

使用ZonedDateTime類型的format()方法 –

回答

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

相關問題