【发布时间】:2019-08-27 09:19:57
【问题描述】:
我有一些无痛的小脚本代码(一种 Groovy 方言,它本身基于 Java),可以解析一些带有 zone-id 的时间戳。 但是,在进行涉及跨越夏令时边界的计算时,时区 ID 会发生变化。
可重现的例子:
def form=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss (zzz)")
in=ZonedDateTime.parse(input, form)
out_plusweek=in.plusHours(168).format(form)
对于大多数输入,我使用的结果都很好:
2019-08-27 11:05:00 (Europe/Amsterdam) 给出 2019-09-03 11:05:00 (Europe/Amsterdam),相似日期相同。
但是,如果我输入2019-03-29 11:05:00 (Europe/Amsterdam),则输出变量设置为2019-04-05 12:05:00 (CEST)。
值本身没问题,但时区名称更改为CEST(中欧夏令时间)。这是正确的,但在我的脚本的下一步中不再可以解析,它需要像 Europe/Amsterdam 这样的 id
那么我怎样才能得到2019-04-05 12:05:00 (Europe/Amsterdam)?
【问题讨论】:
-
@Abra 是的,
VV正是我所需要的,谢谢!你是对的,它不是严格意义上的java。它是无痛的(由 elasticsearch 使用),这是我理解的 Groovy 方言(我对 Groovy 本身没有经验)。 -
@Abra 如果你关心它:如果你把它变成一个,我会接受你的回答
标签: java datetime groovy elasticsearch-painless zoneddatetime