【发布时间】:2019-04-24 17:04:54
【问题描述】:
我希望能够获取我的机器设置的任何时区,而无需在代码中手动指定时区。我可能不在那个时区,但目标是使用计算机设置的时区。
我的时区区域是 America/New_York,使用 ZoneId.systemDefault() (EDT)。但是,我已将计算机的时区设置为太平洋时间 (PDT)。我已经尝试了下面指定的代码。在 Java 8 中实现这一目标的最佳方法是什么?
LocalDateTime currentDateTime = LocalDateTime.of(date.getYear(), date.getMonth(), date.getDay(), hour, minute, 0);
ZonedDateTime zonedDateTime = currentDateTime.atZone(ZoneId.systemDefault());
date = Date.from(zonedDateTime.toInstant());
我希望时区是 Amrica/Dawson 或 America/Tijuana (UTC -08:00),但我得到的是 America/New_York (UTC -05:00)
【问题讨论】:
-
我更感兴趣的是,当现在是夏令时时,您是如何获得
-05:00[America/New_York]的(我获得的是-04:00[America/New_York])。 -
Calendar.getInstance().getTimezone()? -
在 Centos 7 上使用 timedatectl,更改系统时区让我得到了预期的结果,所以我猜你尝试更改系统时区的方式并没有按照你的想法进行
-
@markspace 已经试过了。不过还是谢谢。
-
@Matt 嗨。你以什么方式改变你的时区?我已经使用 Windows 设置的“日期和时间”>“更改时区”进行了更改。