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

有什么理由使用zoneid.of(“utc”)而不是zoneoffset.utc?

桂嘉年
2023-03-14

版本:

  • zoneoffset.utc返回一个zoneoffset,其ID为“z”,偏移量为0,默认区域规则。
  • zoneid.of(“utc”)返回一个zoneRegion,包含ID“utc”和zoneoffset.utc

例如,在处理ZonedDateTime时。在这里,我能发现的唯一区别是它的打印方式不同。

2021-06-10T15:28:25.000000111Z
2021-06-10T15:28:25.000000111Z[UTC]

我们正在来回地进行代码审查讨论,所以我想这种冲突并不罕见。

  • 它是一个常量(此外,它的偏移量值(0)甚至被缓存)。
  • 由于缺少区域信息,它的开销少了一点。
  • 在UTC时,不需要考虑夏时制时间或历史变化,就像在任何其他时区一样。
    因此,对于我迄今为止遇到的所有用例来说,偏移量为0就足够了(比如转换到具有特定夏时制状态的某个区域)。
  • 总的来说,我认为ZoneRegions比ZoneOffsets更受欢迎,因为有一系列额外的特定位置的数据,如特定的夏时制或历史上的时间移位。
  • 但是,对于UTC,zoneid.of(“UTC”)只是围绕zoneoffset.UTC的一个区域,到目前为止我还没有发现任何好处。据我所知,在UTC中,除了继承zoneoffset.UTC规则之外,不存在与区域相关的数据。
  • 每次都需要解析。

除非出于某些原因(例如业务)确实需要UTC时区/地区,否则您应该首选ZoneOffset.UTC。它有一个(次要)的进步在它的性能足迹和UTC ZoneRegion似乎没有提供任何好处,我可以看到或想到。

但是,由于Java Date Time API的复杂性,很难判断我在本文的讨论中是否遗漏了什么。
有人应该使用zoneid.of(“UTC”)吗?

共有1个答案

潘星阑
2023-03-14

有人应该使用zoneid.of(“UTC”)有什么理由吗?

我(现在)想不出任何好的理由。

然而,这样做并不是特别糟糕。在进行查找时很可能会有很小的运行时成本,但这不太可能重要。并且这两种形式(IMO)具有同等的可读性。

   String zoneName = "UTC";  // my default
   // Try to get a non-default zone
   // ...
   id = ZoneId.of(zoneName);
   String zoneName = null;
   // Try to get a non-default zone
   // ...
   id = zoneName == null ? ZoneId.UTC : ZoneId.of(zoneName);
 类似资料:
  • 我希望这两个实例是相等的。

  • 问题内容: 为什么 打印出来? 我希望两个实例都相等。 问题答案: 答案来自(强调我的)javadoc … ZoneId用于标识用于在Instant和LocalDateTime之间进行转换的规则。有两种不同的ID类型: 固定偏移量-与UTC /格林威治标准时间完全抵消的偏移量,所有本地日期时间都使用相同的偏移量 地理区域-适用于从UTC /格林威治中查找偏移量的一组特定规则的区域 大多数固定偏移量

  • 问题内容: 我指的是模块中的OrderedDict,这是一个有序的字典。 如果它具有可订购的附加功能,我意识到这通常不是必需的,但是即使如此,是否还有缺点?慢一点吗?是否缺少任何功能?我没有看到任何丢失的方法。 简而言之,为什么我 不 总是使用它而不是普通的词典? 问题答案: 是的子类,并且需要更多内存来跟踪键的添加顺序。这不是小事。该实现在幕后增加了第二个,所有键的双向链接列表(这是记住顺序的部

  • 我理解Lua脚本与watch/multi/exec相比相对较新。那么现在有没有理由使用watch/multi/exec呢?

  • 我理解JoinColumn和mappedBy的两个JPA注释之间的一般区别,以及oneToMany关系应该使用mappedBy。我理解这是为了确保hibernate(或者我使用的任何JPA工具)识别双向关系,而不是碰巧共享列的两个单向关系。 然而,我想更好地理解为什么这很重要?我认为识别双向关系允许更优化地存储或获取数据,但谁能给我一个如何的例子?如果我有一个带有许多子对象的父对象,并且我用Joi

  • 问题内容: 我最近才发现Redux。一切看起来不错。在Redux上使用Redux是否有任何弊端,陷阱或妥协?谢谢 问题答案: Redux作者在这里! 我想说的是,您将在使用它时做出以下折衷: 您将需要学习避免突变。 Flux对突变数据毫无疑问,但是Redux不喜欢突变,并且许多与Redux互补的软件包都假定您永远不会突变状态。您可以使用仅限开发人员的软件包(例如redux-immutable-st