java - DateTimeFormatter.format 与大陆/城市
问题描述
在我的程序中,我在文本文件中有一个日期和一个日期模式,该模式与 DateTimeFormatter 一起用于解析/格式化日期。
直到最近我的日期看起来像这样01-01-18 00.00.00,00000000 +01:00
,日期模式像这样dd-MM-yy HH.mm.ss,SSSSSSSSS xxx
。在我的程序开始时,我将带有模式的日期解析为 ZonedDateTime,最后我正在格式化另一个 ZonedDateTime 并覆盖文本文件中的日期,它们应该始终采用相同的格式,这与这种模式一起使用.
现在我想把它改成 useEurope/Berlin
而不是+01:00
,所以如果 CEST 更改为 CET 就不会出现错误的计算。
所以我的新日期看起来像这样01-01-18 00.00.00,00000000 Europe/Berlin
,我的日期模式像这样dd-MM-yy HH.mm.ss,SSSSSSSSS z
。现在解析仍然可以正常工作,但是当我尝试格式化 ZonedDateTime 时,输出总是以CEST
而不是Europe/Berlin
.
现在我想知道是否有任何方法可以实现这一点(最好没有 hacky 变通办法),以便格式化日期以大陆/城市结束。
解决方案
要将时区输出为“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]
推荐阅读
- mex - Sprague–Grundy 定理 / 尼姆游戏 / Bowlingpins hackerrank
- amazon-web-services - 如何从现有的复制红移集群参数组工作负载管理设置?
- python - 如何在执行之前通过 python 程序显式配置命令提示符?
- javascript - 使用 JavaScript 更改背景图像
- java - 与 System.out.printf 相比,System.out.println 执行得更快吗
- javascript - 将元素添加到 DOM 时转换无法正常工作
- arrays - 如何从数组数组中推断类型。即数组
> - android - Android - 如何在 ScrollView 中填充 LinearLayout
- r - 在 R/dplyr 中的分组变量级别之间执行操作
- java - 将 Hadoop spark Scala 函数转换为 Java