gpt4 book ai didi

r - 为什么 R 多年来不一致地处理夏令时?

转载 作者:行者123 更新时间:2023-12-03 18:26:27 25 4
gpt4 key购买 nike

我在“America/Detroit”和“GMT”之间转换时间戳时遇到了一个奇怪的情况。仔细检查后,我发现 R 在 2010 年和 2011 年夏令时结束当天凌晨 1 点到 2 点之间转换的时间不同。2010 年,它将这些时间列为“EDT”,而在 2011 年,它将这些时间列为“EST”。结果是转换为 GMT 在一种情况下增加了 4 小时,在另一种情况下增加了 5 小时。任何人都可以了解这种情况并提出纠正这种不一致的解决方案吗?

a = as.POSIXct("2010-11-07 01:58:00", tz = "America/Detroit")
#[1] "2010-11-07 01:58:00 EDT"

b = as.POSIXct("2011-11-06 01:58:00", tz = "America/Detroit")
# [1] "2011-11-06 01:58:00 EST"

format(c(a,b), tz = "GMT")
# [1] "2010-11-07 05:58:00" "2011-11-06 06:58:00"

最佳答案

您提供的时间不明确。由于时钟在 2 点“倒退”,这些天的本地时间 1:58 每天出现两次,一次在美国东部时间,一次在美国东部时间。

两者都是正确的,因为您没有指定您的意思。

操作系统库代码将(可能)使用迭代算法,当派生的 time_t 值与传递给 mktime 的 struct tm 值一致时结束。因此,结果基本上是随机的。

这是一个例子:

http://www.opensource.apple.com/source/ntp/ntp-13/ntp/libntp/mktime.c

关于r - 为什么 R 多年来不一致地处理夏令时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32237724/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com