当前位置: 首页 > 知识库问答 >
问题:

在Java8中有什么方法可以将ZoneId转换为ZoneOffset吗?

易骁
2023-03-14

可以使用系统默认zoneId将其转换为LocalDateTime,但我没有找到将epoch second转换为LocalDateTime的方法(请参见下面的Method2),因为没有ZoneOffset.SystemDefault。我觉得很晦涩。

import java.time.{Instant, LocalDateTime, ZoneId, ZoneOffset}

val epochSecond = System.currentTimeMillis() / 1000

// method1
LocalDateTime.ofInstant(Instant.ofEpochSecond(epochSecond), ZoneId.systemDefault())

// method2
LocalDateTime.ofEpochSecond(epochSecond, 0, ZoneOffset.MAX)

上面给出的源代码是Scala。

共有1个答案

衡修洁
2023-03-14

以下是如何从zoneid获取zoneoffset:

Instant instant = Instant.now(); //can be LocalDateTime
ZoneId systemZone = ZoneId.systemDefault(); // my timezone
ZoneOffset currentOffsetForMyZone = systemZone.getRules().getOffset(instant);

注意:zoneid可以有不同的偏移量,这取决于时间点和特定地点的历史记录。所以选择不同的瞬时会导致不同的偏移。

NB2:ZoneId.of()可以返回ZoneOffset而不是ZoneId。如果传递的是UTC+3/GMT+2/etc,而不是像Africa/Cairo那样的时区。因此,如果传递了UTC/GMT偏移量,则即时的历史/地理/夏令时信息将不会被考虑-您只需使用指定的偏移量。

 类似资料:
  • 谢谢你提前打开这一页。我是一个自学成才的编码器。现在我正在用bootstrap制作我的个人页面。 我现在要做的是;react.js的SPA特性。我所理解的这个特征是; 安装“React-Router-DOM”, 从“React-Router-DOM”导入{Link,NavLink}; 并替换这些锚和href标记以链接到= 下面的代码在'src'文件夹中。 navbar.js 应用程序JS head

  • 材料设计非常强调“纸张”的隐喻。要做到这一点,阴影是必不可少的。由于材料设计是一种理念,而不是API(尽管它内置在L中),因此应该在任何地方(Windows窗体、HTML/CSS等)进行设计。如何在Android API 14到20中做到这一点? 请注意,对于圆形和其他非方形形状,预制PNG实际上并不实用。

  • 问题内容: 我正在尝试将字符串转换为。我不是在尝试解析主机名:字符串是ipv4地址。有工作吗?还是我必须手动解析它? 问题答案: 这样做更好,因为无论传递什么字符串,它都不会进行DNS查找。

  • 问题内容: 说我有: 现在,我要将int值转换为String。哪种方法更有效? 我只是好奇是否有真正的区别,或者一个比另一个更好? 问题答案: 测试了10m分配的数字10 一个似乎赢了 编辑:JVM是Mac OS X 10.5下的标准’/ usr / bin / java’ 更多编辑: 要求的代码 情况2和3同样 使用

  • 为了进行转换,我有下面的代码,它将给定的zoneId转换为UTC格式。 我按如下方式调用上述方法, 一旦我可以获得一个zonedDateTime对象,我想我可以将数据库传递给它并相应地查询它。 JavaUser

  • 作为练习,我将一些旧代码转换为函数流。我对溪流了解不多。看起来转换这段代码应该很简单,但我运气不太好。该方法从给定的整数开始,将其传递给isPrime,如果它是prime,isPrime将返回true。然后将要打印的新(下一个)素数交给用户。如果isPrime为false,则i递增,我们检查下一个整数。