Language agnostic 在构建时区感知应用程序时,常见的陷阱(以及需要测试的东西)是什么?

Language agnostic 在构建时区感知应用程序时,常见的陷阱(以及需要测试的东西)是什么?,language-agnostic,timezone,Language Agnostic,Timezone,我正在构建一个timzone感知应用程序。我应该测试哪些常见(不太常见)的场景 我能想到的唯一一个极端情况是DST,但我肯定我错过了一大堆。我脑子里想不起来了 时区是时间序列:我的意思是,如果你把某个瞬间的本地时间存储在某个地方,那么你使用的是今天的时区信息。到明天,这些信息可能已经改变,存储的瞬间可能会有不同的解释。要解决这个问题,请考虑将时区信息存储在您想要描述的事件或时刻。 日期和时间是观测值:我的意思是,你可以在当地时间编码一个瞬间,而不管当时的时区是什么,并在观测时进行转换。1月1日

我正在构建一个timzone感知应用程序。我应该测试哪些常见(不太常见)的场景

我能想到的唯一一个极端情况是DST,但我肯定我错过了一大堆。

我脑子里想不起来了

  • 时区是时间序列:我的意思是,如果你把某个瞬间的本地时间存储在某个地方,那么你使用的是今天的时区信息。到明天,这些信息可能已经改变,存储的瞬间可能会有不同的解释。要解决这个问题,请考虑将时区信息存储在您想要描述的事件或时刻。

  • 日期和时间是观测值:我的意思是,你可以在当地时间编码一个瞬间,而不管当时的时区是什么,并在观测时进行转换。1月1日凌晨2点可能比今天某个参考点提前4天3小时。但在1月1日凌晨2点,同样的参考点可能只出现在4天零2小时之前。因此,在不同时间在参考点之间转换经过的时间时,您必须注意。特别是,如果您设置了计时器(在
    N
    秒内),您可能需要重新计算计时器是否仍与事件匹配

  • 时区是区域性的:我的意思是你不能把所有具有相同时区偏移量的日期时间都视为相等的。特别是北半球和南半球的DST观测点在一年中可能会有一段时间重合,而在一年中的其余时间则完全不同步

  • 在本地时间中指定的日期和时间不需要存在,或者可以存在多次。您给出了一个DST示例,在DST切换时,这两个时间间隔出现两次,一次在切换之前,一次在切换之后,因此您可能需要一个标志。类似地,DST开关向前跳过时间。然而,DST并不是唯一的例子。国际日期线附近的一些地区决定在它的左边或右边,结果是一整天的时间不见了,或者一整天的时间重复了两次


呼叫Jon Skeet,请进Jon Skeet。。。。