夏令时间隙/重叠定义?何时“纠正”他们?

时间:2016-06-27 16:22:54

标签: time jodatime dst

  1. Daylight Savings Time'Overlap'的定义是什么?& '差距' 吗 我对它们有一种朦胧的理解,所以我想确认......它们中的任何一个是什么意思?

  2. DST Gap或DST重叠“纠正”是什么意思?什么时候需要纠正,什么时候不需要纠正?

  3. 上述问题与语言无关,但我的应用实例是:

    1. 何时致电org.joda.time.LocalDateTime#correctDstTransition
        

      在DST重叠的情况下更正日期。创建的Date对象具有   与此日期时间完全相同的字段,除非是时间   因夏令时间隙而无效。在那种情况下,时间会   设置为差距后的最早有效时间。在一个案例中   夏令时重叠,选择较早的瞬间。

1 个答案:

答案 0 :(得分:4)

大部分内容已在the DST tag wiki中说明,但我会回答您的具体问题。

  

Daylight Savings Time' Overlap'的定义是什么? &安培; '空位&#39 ;?
  ...
  "在"内是什么意思?他们中的任何一个?

夏令时开始时,当地时间提前 - 通常为一小时。这造成了一个“差距”。在该时区的当地时间值。

  • 例如,当DST在美国开始时,时钟从凌晨1:59到凌晨3:00。从凌晨2:00到凌晨2:59的任何当地时间价值将被视为"在差距内#34;

  • 请注意,差距中的值不存在。它们不会出现在现实世界中,除非时钟没有正确推进。在实践中,通常通过在另一个本地时间添加或减去经过时间值来获得间隙内的值。

当夏令时结束时,本地时间缩回的时间与开始时相同(通常为1小时)。这会产生"重叠"在该时区的当地时间值。

  • 例如,当DST在美国结束时,时钟从1:59 AM回到凌晨1:00。如果没有其他符合条件的信息,则从凌晨1:00到凌晨1:59的任何当地时间值不明确

  • 成为"重叠"表示您的值可能不明确,因为它属于此范围。

  • 此类值可能属于日光时间出现(第一个顺序出现),或者可能属于标准时间发生(顺序来自第二)。

  

"纠正"是什么意思? DST Gap或DST重叠?

校正间隙意味着通过将本地时间值移动到不同的值来确保本地时间值有效。这样做有各种方案,但最常见也是最明智的是通过差距来提高当地时间价值。

  • 例如,如果您的当地时间是凌晨2:30,并且您确定它发生在美国的春季转型当天,那么它就会落入差距。提前到凌晨3:30。

  • 这种方法往往效果很好,因为模拟了人类手动推进模拟时钟的行为 - 或者更确切地说,它是在没有正确推进的情况下进行纠正。

纠正重叠意味着确保所有当地时间都合格。通常,这是通过为所有值分配时区偏移来实现的。

  • 如果值不明确,则偏移量是确定性的。

  • 如果某个值落在回退过渡当天的重叠范围内,那么选择两个可能值的 first 通常是有意义的(这将是拥有日光时间偏移量)。这是因为时间向前移动。但是,有时候使用不同规则是有意义的,所以YMMV。

  

什么时候需要纠正,什么时候不需要纠正?

如果您尝试将时间用作瞬时值,例如确定两个值之间的经过时间,将经过的时间添加到特定值,或转换为UTC时,则需要更正间隙和重叠当它们发生时。

如果您只使用用户输入和输出,始终显示用户给您的确切值(并且从不将其用于数学或时区转换),那么您无需纠正间隙和重叠。

此外,如果您正在使用仅限日期值或仅限时间值,那么您根本不应该应用时区信息,因此无需更正间隙和重叠。

最后,如果您严格使用没有夏令时的协调世界时(UTC),则无需更正间隙和重叠。

  

何时致电org.joda.time.LocalDateTime#correctDstTransition

你不是。该方法为private,并根据需要由其他Joda-time函数调用。