【发布时间】:2011-12-21 16:31:03
【问题描述】:
我从数据记录器中获得时间序列数据,该数据记录器设置为一个没有夏令时的时区(NZST 或 UTC+12:00),数据跨越数年。数据记录器不考虑 DST 更改,并在有/没有 DST 的情况下与本地时间同步(取决于部署它的人)。
但是,当我将数据输入 R 时,我无法正确使用 as.POSIXct 来忽略 DST。我在具有以下设置的 Windows 计算机上使用 R 2.14.0:
> Sys.timezone()
[1] "NZDT"
> Sys.getlocale("LC_TIME")
[1] "English_New Zealand.1252"
以下是春季 DST 更改的三个时间戳,每个时间戳相隔 1 小时:
> ts_str <- c("28/09/2008 01:00", "28/09/2008 02:00", "28/09/2008 03:00")
> as.POSIXct(ts_str, format="%d/%m/%Y %H:%M", tz="")
[1] "2008-09-28 01:00:00 NZST" NA
[3] "2008-09-28 03:00:00 NZDT"
> as.POSIXct(ts_str, format="%d/%m/%Y %H:%M", tz="UTC")
[1] "2008-09-28 01:00:00 UTC" "2008-09-28 02:00:00 UTC"
[3] "2008-09-28 03:00:00 UTC"
如您所见,时钟从 1:59 跳到 3:00,因此 2:00 无效,因此不适用。此外,我可以使用 tz="UTC" 让它忽略 DST 更改。但是,我宁愿保留正确的时区,因为我有其他数据系列记录与 DST(NZDT 或UTC+13:00),我想融入(通过merge)供我分析。
如何在 MS Windows 计算机上配置 tz 参数?我尝试了很多东西,例如“NZST”、“新西兰标准时间”、“UTC+12:00”、“+1200”等,但没有运气。还是我要修改一些其他设置?
【问题讨论】:
标签: r datetime timezone time-series dst