Datetime DST边界或跨时区的持续时间(天)
我想知道ISO-8601或任何其他关于时间的流行标准是否解决了间隔跨越DST边界时的持续时间问题(以天为单位) 例如,2017-03-01T12:00:00-05:00和2017-03-02T12:00:00-05:00之间的持续时间(以天为单位)显然是Datetime DST边界或跨时区的持续时间(天),datetime,timezone,dst,duration,iso8601,Datetime,Timezone,Dst,Duration,Iso8601,我想知道ISO-8601或任何其他关于时间的流行标准是否解决了间隔跨越DST边界时的持续时间问题(以天为单位) 例如,2017-03-01T12:00:00-05:00和2017-03-02T12:00:00-05:00之间的持续时间(以天为单位)显然是1天 但2017-03-11T12:00:00-05:00(DST关闭)和2017-03-12T12:00:00-04:00(DST打开)之间的持续时间(以天为单位)如何?一方面,从中午一直到第二天中午——这似乎是1天。另一方面,它仅为实际运行时
1天
但2017-03-11T12:00:00-05:00(DST关闭)和2017-03-12T12:00:00-04:00(DST打开)之间的持续时间(以天为单位)如何?一方面,从中午一直到第二天中午——这似乎是1天
。另一方面,它仅为实际运行时间的23小时
此外,无论语义是什么,它们是否也适用于不同的地理时区(比如纽约的一天中午与伦敦的第二天中午)?ISO 8601:2004(E)的相关部分 2.2.6
日历日
从午夜开始到下一个午夜结束的时间间隔,后一个午夜也是下一个日历日的开始时刻 注1:日历日通常也称为日 注2:日历日的持续时间为24小时;除非由以下人员修改:
- 国际地球自转服务局(IERS)决定插入或删除闰秒,或
- 插入或删除地方当局可能规定的其他时间间隔,以改变当地时间的时标
天
〈期间〉 日历日的持续时间 注:术语“日”也适用于任何时间间隔的持续时间,该时间间隔从某个日历日的某个时间开始,到下一个日历日的同一时间结束 4.2.2.1 。。。未制定任何规定,以防止因当地时间(如夏令时)的时间刻度不连续而导致表达含糊不清 总之,我们应该非常小心使用“一天”这个词。虽然常见的“标准日”持续时间为24小时,但闰秒和本地时区转换都会影响其持续时间 根据经验,默认情况下,我倾向于以日历单位来考虑一天。也就是说,就像月份和年份一样,它是日历系统的一部分,而不是计时系统。想象一下,这三个部分协同工作,在下面生成一个正方形: 相反,时间单位均基于SI,即: 与铯133原子基态的两个超精细能级之间的跃迁对应的9192631770个辐射周期的持续时间 我们其他的时间单位都是从那里推导出来的。60秒等于一分钟。60分钟等于一小时
尽管我们更愿意用精确的时间量来定义天数,但由于时区、夏令时和闰秒的原因,我们无法始终协调两者。似乎与所需时间相关。我认为你认为没有标准是不可能的。这也隐藏在报表和SQL库中的许多内置函数中。在许多内置函数库中,11:59 pm至12:01 am将是一整天。具体到您的用例,您可以争辩时间就是时间,DST不相关,一小时消失,一小时每年重复一次。这就是我广泛使用UTC的原因。允许您选择算术发生的上下文:UTC或特定时区的特定本地时间。这两种计算都是有用的,程序员必须决定哪一种对任何给定的情况都是正确的。图书馆正在考虑标准化到C++标准中,如果接受,C++标准将有关于这个问题的一些说法。