带有大陆/城市的DateTimeFormatter.format

时间:2018-07-05 21:01:12

标签: java scala date datetime datetime-format

在我的程序中,我在文本文件中有一个日期和一个日期模式,该模式与DateTimeFormatter一起使用以解析/格式化日期。

直到最近,我的日期看起来像这样wmd_distance(),日期模式看起来像这样01-01-18 00.00.00,00000000 +01:00。在程序开始时,我将带有模式的日期解析为ZonedDateTime,最后,格式化另一个ZonedDateTime并覆盖文本文件中的日期,并且它们应始终采用相同的格式,并使用该模式

现在,我想将其更改为使用dd-MM-yy HH.mm.ss,SSSSSSSSS xxx而不是Europe/Berlin,因此,如果CEST更改为CET,不会有错误的计算。

所以我的新日期看起来像这个+01:00,而我的日期模式看起来像这个01-01-18 00.00.00,00000000 Europe/Berlin。 现在,解析仍然可以正常工作,但是当我尝试格式化ZonedDateTime时,输出始终以dd-MM-yy HH.mm.ss,SSSSSSSSS z而不是CEST结尾。

现在,我想知道是否有任何方法可以实现此目的(最好没有hacky解决方法),以便格式化日期以Continent / City结尾。

1 个答案:

答案 0 :(得分:3)

要将时区输出为“欧洲/柏林”,请使用VV模式字母,例如:

val formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS VV")
println(ZonedDateTime.now().format(formatter))
// 2018-07-05 23:12:06.901 Europe/Paris

它也可以反向运行:

val date = ZonedDateTime.parse("2018-07-05 12:00:01.123 Europe/Paris", formatter)
println(date)
// 2018-07-05T12:00:01.123+02:00[Europe/Paris]