【发布时间】:2016-11-28 01:07:40
【问题描述】:
我希望每三个小时创建一个在特定日期开始和结束的时间戳序列。我尝试过的方法效果很好,但都有同样的问题。在序列中间的某个地方,PST 到 PDT 之间存在时间转换,我不知道为什么。以下是我尝试过的代码,类似于事先在本网站上提出的问题(Question1 和 Question2):
TIME1 <- as.POSIXct( "2000-01-01 02:00:00", tz = "America/Los_Angeles")
TIME2 <- as.POSIXct( "2016-02-29 23:00:00" , tz = "America/Los_Angeles")
temp <- seq(from = TIME1, to = TIME2, by = "3 hours")
当我查看temp 的输出时,一开始看起来不错,除非查看下面的指定区间
temp[720:745]
[1] "2000-03-30 23:00:00 PST" "2000-03-31 02:00:00 PST" "2000-03-31 05:00:00 PST" "2000-03-31 08:00:00 PST" "2000-03-31 11:00:00 PST" "2000-03-31 14:00:00 PST"
[7] "2000-03-31 17:00:00 PST" "2000-03-31 20:00:00 PST" "2000-03-31 23:00:00 PST" "2000-04-01 02:00:00 PST" "2000-04-01 05:00:00 PST" "2000-04-01 08:00:00 PST"
[13] "2000-04-01 11:00:00 PST" "2000-04-01 14:00:00 PST" "2000-04-01 17:00:00 PST" "2000-04-01 20:00:00 PST" "2000-04-01 23:00:00 PST" "2000-04-02 03:00:00 PDT"
[19] "2000-04-02 06:00:00 PDT" "2000-04-02 09:00:00 PDT" "2000-04-02 12:00:00 PDT" "2000-04-02 15:00:00 PDT" "2000-04-02 18:00:00 PDT" "2000-04-02 21:00:00 PDT"
[25] "2000-04-03 00:00:00 PDT" "2000-04-03 03:00:00 PDT"
通知[1] 的输出,它从“2000-03-30 23:00:00 PST”变为“2000-03-31 02:00:00 PST”,即 3 小时,但在[13] 行从“2000-04-01 23:00:00 PST”到“2000-04-02 03:00:00 PDT”。注意那里的时区变化。这发生在整个序列中。任何想法如何避免这种结果?我相信它会自动为我转换夏令时,这是我不想要的。如果我可以将其保留为 LST(当地标准时间),那就太好了。
更新:我最近发现this suggestion,我们只是转换为时区“UTC”来取消夏令时。它有效,只是将所有时间戳标记为UTC。但是,很高兴看看是否还有办法将其保留为 LST。
【问题讨论】:
-
LST = 当地标准时间?
-
还可以查看
lubridate包中的dst和dhours函数。它们在这里是相关的。 -
@BenBolker 正确理解 LST 的含义。
-
@sayaa dst 和 dhours 在创建时间序列后可能是一个不错的选择。谢谢你的建议。