java - 有没有办法在Java 8中将ZoneOffset转换为ZoneId?

标签 java java-time zoneid

我正在开发一个项目,其中我的zoneid有限,并且我从前端获取zoneoff设置,所以这就是为什么我想将时间关闭设置转换为java中的zoneid。有没有办法将 zoneoffset 转换为区域 id。

最佳答案

ZoneOffset 是一种 ZoneId!请参阅declaration在文档中。

public final class ZoneOffset
extends ZoneId

无需任何额外步骤。您可以直接将 ZoneOffset 对象传递给需要 ZoneId 的对象。


如果您真正想要做的是查找基于区域的区域 ID,例如Europe/London,仅从 ZoneOffset 来看,现在或任何其他特定时刻可能会有多个具有偏移量的此类 ID。

要查找特定时刻指定偏移处的基于区域的 ID 列表,您可以执行以下操作:

ZoneId.getAvailableZoneIds().stream()
    .map(ZoneId::of)
    .filter(id -> id.getRules().getOffset(theSpecifiedInstant).equals(theSpecifiedOffset))
    .collect(Collectors.toList());
    // or just .toList() in Java 16+

关于java - 有没有办法在Java 8中将ZoneOffset转换为ZoneId?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76419888/

相关文章:

java - 最好的 Java OXM 库是什么?

java - 快速脱离捕获 block

java - 如何在 Android 应用程序中为用户设置手动更新选项?

Java 8 时间 : Iterate over a day's LocalTime in period steps

java - 想要在 compareTo() 中将 Java.time.LocalDate 与 java.time.LocalTime 进行比较

java - Java 堆中存在许多 java.time.ZoneRegion 实例。难道 ZoneId 实例不应该被缓存吗?

java - 私有(private)成员可通过公共(public)方法访问

java - 将 java.util.Date 转换为 yyyy-MM-dd 格式的字符串,而无需创建大量对象

java - 如何使用 Java ZoneId 的区域设置?

java - 如何管理java中不直接支持的时区