変換ルーチンには、非DSTベースでエンコードされたdatetimesのメソッドがあります。すべての回 "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ゾーンを指定する正しいフォーマットを持っていました。米国太平洋スタンダードゾーンamは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"