【发布时间】:2018-08-22 16:07:05
【问题描述】:
我正在以 POSIX 格式导出 TZ 变量以在 Linux 上设置时区。例如:
export TZ="EST+5EDT,M3.2.0/02:00,M11.1.0/02:00"
Linux date 命令返回:
2018 年 3 月 14 日星期三 03:47 EDT
Java ZonedDateTime.now() 返回:
2018-03-14T02:47:36.808[GMT-05:00]
Java 似乎没有考虑夏令时规则。有什么问题?
【问题讨论】:
-
ZoneId.systemDefault()返回的是什么? -
猜测一下,您的 JVM 不会尝试解析第一个逗号之后的任何内容。例如
TZ="EST+5EDT,I'm a little teapot"产生与TZ="EST+5EDT,M3.2.0/02:00,M11.1.0/02:00"相同的输出。 -
@JoeC ZoneId.systemDefault() 返回 GMT-05:00
-
@AndyTurner 好像是JVM的bug,你有什么想法可以解决吗?
-
看here,如果 Java 不能识别时区,它看起来好像只支持固定偏移的自定义时区。
标签: java time timezone posix dst