java - DateTimeFormatter.format 与大陆/城市

标签 java scala date datetime datetime-format

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

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

现在我想将其更改为使用 Europe/Berlin 而不是 +01:00,这样如果 CEST 更改为 CET 就不会出现错误计算。

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

现在我想知道是否有任何方法可以实现这一点(最好没有棘手的解决方法),以便格式化日期以大陆/城市结尾。

最佳答案

要将时区输出为“Europe/Berlin”,请使用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]

关于java - DateTimeFormatter.format 与大陆/城市,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51199858/

相关文章:

java - 根据环境变量设置 Spring Boot application.properties

java - Play JSON : How to use string as proper json

java - 如何在Java中将日期从2018年8月31日转换为2018年8月31日

mysql - 在包含 date_format 的 sql 语句中使用参数

java - Mongodb java查询生成器

java - 我陷入困境,试图制作一款回合制游戏,但在结束回合和开始新回合时遇到困难

scala - Scala 中函数相等是如何工作的?

scala - 在spark MLlib中,如何在spark scala中将字符串转换为整数?

java - 无法获取两个日期之间的记录

java - 从字符串中删除多个子字符串 - Java