R中的时区属性问题

时间:2017-11-30 15:08:06

标签: r timezone

我注意到R呈现一些时区属性的方式发生了变化。例如:

  • 带时区的日期/时间对象" America / New_York"提出时区属性" EST" (与格式代码%Z一致)。情况一直如此,情况仍然如此

  • 其他时区,例如"亚洲/卡塔尔"不再出现熟悉的属性" AST" (如阿拉伯标准时间)如前所见,但现在出现" + 03"。

为什么会发生这种变化?当我尝试格式化日期/时间对象以使用%Z格式时,我仍然得到" + 03"不是" AST"。

这一行显示了实践中的问题:

> format(as.POSIXct(Sys.time()), format = "%Z", tz = "Asia/Qatar")

[1]" + 03"

这可能看似微不足道,但遗留代码期望" AST"将不再有效。任何反馈都表示赞赏。

1 个答案:

答案 0 :(得分:2)

R和大多数其他计算平台的时区数据源是IANA time zone database。这些数据的维护者始于2016年,并持续到2017年,精心遍历每个时区缩写,删除他们认为发明的任何东西,并用固定的数字偏移代替它。

发明",了解在其历史的早期阶段,数据库维护者只能在没有时区的情况下构建对于时区缩写似乎合理的东西是可以接受的。在现实世界中自然使用。这种做法现在已经停止,并且正在恢复,因为人们认识到数据库存在来自世界的记录时区信息,而不是发明它。

换句话说,虽然Asia/Qatar时区条目之前有过" GST"作为1972年之前的时间的缩写,以及" AST"作为从那里到现在的时间的缩写,卡塔尔没有使用实际的缩写。至少,不是对数据库维护者的最佳了解。

在tzdb 2017a中进行了特别的更改。 Announcement here.