1

我有日期时间值,例如

val <- c(1376517610, 1376519412, 1376528711, 1376528411, 1376528411)

我不想将这些值转换为日期时间,我正在尝试使用

> as.POSIXct(val, tz="EEST", origin = '1970-01-01 00:00:00')
[1] "2013-08-14 22:00:10 GMT" "2013-08-14 22:30:12 GMT" "2013-08-15 01:05:11 GMT"
[4] "2013-08-15 01:00:11 GMT" "2013-08-15 01:00:11 GMT"
Warning messages:
1: In strptime(xx, f <- "%Y-%m-%d %H:%M:%OS", tz = tz) :
  unknown timezone 'EEST'
2: In as.POSIXct.POSIXlt(x) : unknown timezone 'EEST'
3: In strptime(x, f, tz = tz) : unknown timezone 'EEST'
4: In as.POSIXct.POSIXlt(as.POSIXlt(x, tz, ...), tz, ...) :
  unknown timezone 'EEST'
5: In as.POSIXlt.POSIXct(x, tz) : unknown timezone 'EEST'

但我的时区是 EEST

> Sys.timezone()
[1] "EEST"

如何解决这个问题并将这些数据转换为正确的时区?

4

1 回答 1

1

就像这个问题的情况一样,你不应该指定夏令时时区,只需使用正常时区,系统会因为日期而理解它是夏令时:

as.POSIXct(val, tz="EET", origin = '1970-01-01 00:00:00')
[1] "2013-08-14 23:00:10 EEST" "2013-08-14 23:30:12 EEST" "2013-08-15 02:05:11 EEST" "2013-08-15 02:00:11 EEST" "2013-08-15 02:00:11 EEST"

注意:我发布此答案是因为我认为它解决了“未知时区”问题。然而,当它应该是 UTC +3 时,确实仍然存在显示为 UTC +1 的问题。使用“Europe/Helsinki”会产生同样的错误(至少在 Mac OS X 10.6 和 R 2.14.2 上对我来说,使用法语语言环境):

as.POSIXct(val, tz="Europe/Helsinki", origin = '1970-01-01 00:00:00')
[1] "2013-08-14 23:00:10 EEST" "2013-08-14 23:30:12 EEST" "2013-08-15 02:05:11 EEST" "2013-08-15 02:00:11 EEST" "2013-08-15 02:00:11 EEST"
于 2013-08-16T07:25:27.877 回答