Import date-time at a specified timezone, disregard Daylight Savings Time
我有从一个数据记录器中获得的时间序列数据,它被设置为一个没有夏令时的时区(nzst或utc+12:00),数据跨越几年。数据记录器不考虑DST更改,并与本地时间同步(有/无DST)(取决于部署者)。
但是,当我将数据输入r时,我不能正确地使用
1 2 3 4 | > Sys.timezone() [1]"NZDT" > Sys.getlocale("LC_TIME") [1]"English_New Zealand.1252" |
以下是弹簧DST变化的三个时间戳,每个时间戳间隔1小时:
1 2 3 4 5 6 7 | > 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无效,因此na。此外,我可以使用
如何在MS Windows计算机上配置
您可以使用
1 2 3 | as.POSIXct(ts_str, format="%d/%m/%Y %H:%M", tz="Etc/GMT+12") [1]"2008-09-28 01:00:00 GMT+12""2008-09-28 02:00:00 GMT+12" [3]"2008-09-28 03:00:00 GMT+12" |
要获得可用时区的完整列表,请使用,
1 | dir(file.path(R.home("share"),"zoneinfo"), recursive=TRUE) |
其中有几个.tab文件不是时区,但包含一些信息,但我的regex fu不够好,无法用
如果只将12*60*60添加到该UTC派生向量,您将得到本地"标准"时间。