Java 8 将 UTC 时间转换为 EDT/EST 以便日期保持不变

标签 java datetime java-8 timezone zoneddatetime

我在 java 中使用 ZonedDateTime 作为变量。

我想将变量的值(默认 UTC 时区)转换为“美国/纽约”时区,以便日期保持不变。

示例 UTC 时间上午 4:00 = 美国东部标准时间上午 12:00。从 ZonedDateTime 变量中添加或减去小时数,这样日期就不会更改。

我们如何才能实现这种转换?

最佳答案

您可以通过转换为 LocalDateTime 并返回具有指定时区的 ZonedDateTime 来实现:

ZonedDateTime zoned = ZonedDateTime.now();
LocalDateTime local = zoned.toLocalDateTime();
ZonedDateTime newZoned = ZonedDateTime.of(local, ZoneId.of("America/New_York"));

关于Java 8 将 UTC 时间转换为 EDT/EST 以便日期保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52602181/

相关文章:

java - 加载启动文件

java - 如何使用 Swing 刷新 Windows 任务栏?

r - 日期计算用天而不是秒

javascript - Json 到 DateTime - 更改格式

java - 在 Hibernate 中映射 Java 8 月份枚举列表

java - 在 Activity 期间更新 JLabel 的标签文本 - Swing

java - SQL 语法错误 检查与您的 MariaDB 服务器对应的手册?

java - Kafka SaslAuthenticationException 在 SASL_SSL 协议(protocol)的临时基础上发生

php - 为什么 datetime->days 总是返回正数

java - 加快提取 Zip 文件