Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime DST边界或跨时区的持续时间(天)_Datetime_Timezone_Dst_Duration_Iso8601 - Fatal编程技术网

Datetime DST边界或跨时区的持续时间(天)

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天。另一方面,它仅为实际运行时

我想知道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天
。另一方面,它仅为实际运行时间的23小时


此外,无论语义是什么,它们是否也适用于不同的地理时区(比如纽约的一天中午与伦敦的第二天中午)?

ISO 8601:2004(E)的相关部分

2.2.6
日历日
从午夜开始到下一个午夜结束的时间间隔,后一个午夜也是下一个日历日的开始时刻

注1:日历日通常也称为日

注2:日历日的持续时间为24小时;除非由以下人员修改:

  • 国际地球自转服务局(IERS)决定插入或删除闰秒,或
  • 插入或删除地方当局可能规定的其他时间间隔,以改变当地时间的时标
2.2.7

〈期间〉 日历日的持续时间

注:术语“日”也适用于任何时间间隔的持续时间,该时间间隔从某个日历日的某个时间开始,到下一个日历日的同一时间结束

4.2.2.1

。。。未制定任何规定,以防止因当地时间(如夏令时)的时间刻度不连续而导致表达含糊不清

总之,我们应该非常小心使用“一天”这个词。虽然常见的“标准日”持续时间为24小时,但闰秒和本地时区转换都会影响其持续时间

根据经验,默认情况下,我倾向于以日历单位来考虑一天。也就是说,就像月份和年份一样,它是日历系统的一部分,而不是计时系统。想象一下,这三个部分协同工作,在下面生成一个正方形:

相反,时间单位均基于SI,即:

与铯133原子基态的两个超精细能级之间的跃迁对应的9192631770个辐射周期的持续时间

我们其他的时间单位都是从那里推导出来的。60秒等于一分钟。60分钟等于一小时


尽管我们更愿意用精确的时间量来定义天数,但由于时区、夏令时和闰秒的原因,我们无法始终协调两者。

似乎与所需时间相关。我认为你认为没有标准是不可能的。这也隐藏在报表和SQL库中的许多内置函数中。在许多内置函数库中,11:59 pm至12:01 am将是一整天。具体到您的用例,您可以争辩时间就是时间,DST不相关,一小时消失,一小时每年重复一次。这就是我广泛使用UTC的原因。允许您选择算术发生的上下文:UTC或特定时区的特定本地时间。这两种计算都是有用的,程序员必须决定哪一种对任何给定的情况都是正确的。图书馆正在考虑标准化到C++标准中,如果接受,C++标准将有关于这个问题的一些说法。