夏令时更改时间表触发一段时间

我正在编写一个日程安排应用程序,我很好奇如何处理以下有关夏令时(DST)更改的边际情况:

说,我们正在DST的时区:

  • 2014-Mar-92:00:00 AM (时钟向前调整)
  • 2014-Nov-22:00:00 AM (时钟向后调整)
  • 假设最终用户预定了2014-Nov-2, 2:00:00 AM应用程序。

    我们假设当地的日期/时间现在是2014-Nov-2, 1:59:99 AM

    我的应用程序何时应该在1秒内或1小时1秒内启动计划?

    是否有一个标准来定义如何处理这种情况?


    根据维基百科,夏令时的规则是:

    ...春天时钟从01:59标准时间的最后一刻跳到03:00 DST,那一天有23小时,而在秋天,时钟从01:59 DST的最后一刻跳到01: 00标准时间,重复那个小时,那一天有25个小时。[37] 当地时间的数字显示在夏令时并不是02:00,而是从01:59:59.9跳转到03:00:00.0

    所以虽然世界各地的时间和日期不同,但规则却是相似的(忽略了澳大利亚的豪爵岛,它使用了半小时的班次)。 向后或向前跳跃的小时数不会被触及,而是被跳到的小时数。

    所以我认为你应该在一小时一秒内触发时间表。

    如果你在一秒内触发它,并且用户想要在3点停止时间表,它将运行两个小时,而不是看起来不正确的一个(2-3 = 1小时)。


    我同意所有关于“你应该做什么”的评论高度依赖于你的用户的期望,但我仍然会提出我的意见。

    如果您正在安排单个事件,则应该能够测试用户提供的日期和时间,以查看它是无效的(在春季DST过渡中)还是不明确的(在秋季DST过渡中)。 在无效的情况下,提示“抱歉,那个时间无效”。 在模棱两可的情况下,提示类似“你的意思是1:30 PDT(UTC-7)还是1:30 PST(UTC-8)?” 并相应地处理选择。

    但是我会从一个重复性事件的用例来处理您的问题,例如每天同时触发的闹钟。 作为闹钟的用户,我会期待什么?

  • 如果我在凌晨2点安排每日时间,但在春季过渡时间从1:59:59到3:00:00,我预计闹钟会在3:00:00右移。 我当然不希望它在4:00:00关闭 - 这将是一个额外的小时。 我也不希望闹钟不会因为技术上没有发生2点而开火。

  • 如果我安排每天凌晨1点的时间,但在秋季过渡时间从1:59:59回到1:00:00 - 作为此闹铃的用户,我希望它会在仅第一次出现(白天时间)。 发生两次会很烦人。

    但是在这里我们看到这是如何说明需要了解用户的期望。 如果我能告诉我的闹钟让我有多一点的时间回来,该怎么办? “请闹钟先生,我想用我的额外DST小时睡觉,在第二次出现时叫我起床。” - 现在我还没有亲眼看到任何这种闹钟,但我认为你明白我的意思。

  • 现在也许你没有使用闹钟。 也许这是一个定时电汇或其他时间敏感的项目。 你应该通过预期的逻辑来看看什么对你有意义。

    请注意,夏令时规则因时区而大幅变化。 世界不同时做DST。 其中大部分完全没有做到。

    要进一步了解DST行为,请参阅DST标记wiki中的图表。

    链接地址: http://www.djcxy.com/p/5001.html

    上一篇: Daylight Saving Time change schedule trigger for a marginal time

    下一篇: time at a specified timezone, disregard daylights savings time