我有从数据 Logger 获得的时间序列数据,该数据 Logger 设置为一个时区而没有夏令时(NZST或UTC 12:00),数据跨越几年 . 数据 Logger 不考虑DST更改,并且在有/无DST的情况下同步到本地时间(取决于部署它的人员) .
但是,当我将数据输入R时,我无法正确使用 as.POSIXct 来忽略DST . 我在具有以下设置的Windows计算机上使用R 2.14.0:
> Sys.timezone()
[1] "NZDT"
> Sys.getlocale("LC_TIME")
[1] "English_New Zealand.1252"
以下是 Spring 季DST变化的三个时间戳,每个时间间隔为1小时:
> ts_str
> 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无效,因此NA . 此外,我可以使用 tz="UTC" 来让它忽略DST更改 . 但是,我宁愿保留正确的时区,因为我有其他数据系列记录了DST(NZDT或UTC 13:00),我想混合(通过 merge )进行分析 .
如何在MS Windows计算机上配置 tz 参数?我尝试了很多东西,比如"NZST","New Zealand Standard Time","UTC+12:00","+1200"等,但没有运气 . 或者我修改其他一些设置?