在特定时区的时间,无视夏令时节约时间

我从时间序列数据中获得数据记录器,该数据记录器被设置为一个时区而没有节约日光(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是无效的,因此NA。 此外,我可以使用tz="UTC"使其忽略DST更改。 不过,我宁愿保留正确的时区,因为我有其他数据系列记录了DST(NZDT或UTC + 13:00),我想将它们混合(通过merge )用于我的分析。

如何在MS Windows计算机上配置tz参数? 我尝试了很多东西,比如“NZST”,“新西兰标准时间”,“UTC + 12:00”,“+1200”等,但没有运气。 或者我修改其他设置?


你可以使用tz="Etc/GMT+12"

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"

有关可用时区使用的完整列表,

dir(file.path(R.home("share"),"zoneinfo"), recursive=TRUE)

里面还有一对夫妇的.TAB文件的哪些不是时区,但持有一些信息,但我的正则表达式福是不够好,能够与模式参数将它们排除在外dir


如果只是将12 * 60 * 60添加到UTC派生矢量,您将拥有本地“标准”时间。

链接地址: http://www.djcxy.com/p/4999.html

上一篇: time at a specified timezone, disregard daylights savings time

下一篇: How to preserve accurate time (daylight saving) for a web application?