轉換例程有一個日期時間的方法,它是在非DST庫中編碼的。考慮使用 「UCT」(或 「GMT」)爲您的所有時間:
as.POSIXct(dt$dropoffDT, format="%Y-%m-%d %H:%M:%S", usetz=TRUE, tz="UCT")
MCVE:
dt <- # made with dput(dt)
structure(list(dropoffDT = structure(c(1L, 5L, 2L, 3L, 4L, 6L
), .Label = c("2016-03-12 02:09:45", "2016-03-13 02:01:00", "2016-03-13 02:05:25",
"2016-03-13 02:08:00", "2016-03-13 02:15:52", "2016-03-14 02:00:10"
), class = "factor")), .Names = "dropoffDT", class = "data.frame", row.names = c(NA,
-6L))
as.POSIXct(dt$dropoffDT, format="%Y-%m-%d %H:%M:%S", usetz=TRUE, tz="GMT")
[1] "2016-03-12 02:09:45 GMT" "2016-03-13 02:15:52 GMT"
[3] "2016-03-13 02:01:00 GMT" "2016-03-13 02:05:25 GMT"
[5] "2016-03-13 02:08:00 GMT" "2016-03-14 02:00:10 GMT"
我只看到了lubridate
方面更高版本。我不是該軟件包的用戶。通過使用字母tz
掃描函數使我認爲這些函數需要具有'datetime'格式的參數。
我發現R中的時區參數非常混亂(並且我不是唯一一個:Confused by DateTime offsets。)該提問者具有正確的格式來指定具有偏移量的非DST區域:美國太平洋斯坦塔德區,其中I我將會是tz="Etc/GMT+8"
,並指出儘管我們的時間有幾個小時需要比倫敦時間少8個小時,但使用了一個加號。
當我工作這些方面我一般都需要做測試:
strftime(Sys.time(), usetz=TRUE, tz="Etc/GMT-7")
#[1] "2016-12-04 23:53:42 GMT-7"
# No, it's not midnight here
strftime(Sys.time(), usetz=TRUE, tz="Etc/GMT+7")
#[1] "2016-12-04 09:53:52 GMT+7"
# it's not 9:53A either
strftime(Sys.time(), usetz=TRUE)
#[1] "2016-12-04 08:54:13 PST"
strftime(Sys.time(), usetz=TRUE, tz="Etc/GMT+8")
#[1] "2016-12-04 08:54:26 GMT+8"