Конвертировать данные EST / EDT в GMT в R - PullRequest
0 голосов
/ 18 января 2020

У меня есть набор данных, который содержит дату EST / EST, как это.

c(
"11/03/2007 18:00 EDT", "11/03/2007 19:00 EDT", "11/03/2007 20:00 EDT",
"11/03/2007 21:00 EDT", "11/03/2007 22:00 EDT", "11/03/2007 23:00 EDT",
"11/04/2007 00:00 EDT", "11/04/2007 01:00 EDT", "11/04/2007 01:00 EST",
"11/04/2007 02:00 EST", "11/04/2007 03:00 EST", "11/04/2007 04:00 EST",
"11/04/2007 05:00 EST", "11/04/2007 06:00 EST", "11/04/2007 07:00 EST",
"11/04/2007 08:00 EST", "11/04/2007 09:00 EST", "11/04/2007 10:00 EST",
"11/04/2007 11:00 EST")

Я хочу преобразовать эти данные в GMT. Я попробовал следующий код

Data$Time=as.POSIXct(Data$Time, '%m/%d/%Y %H:%M',tz='EST5EDT')
attributes(Data$Time)$tzone <- "GMT"

и получил следующий вывод:

[1] "2007-11-03 22:00:00 GMT" "2007-11-03 23:00:00 GMT"
 [3] "2007-11-04 00:00:00 GMT" "2007-11-04 01:00:00 GMT"
 [5] "2007-11-04 02:00:00 GMT" "2007-11-04 03:00:00 GMT"
 [7] "2007-11-04 04:00:00 GMT" "2007-11-04 05:00:00 GMT"
 [9] "2007-11-04 05:00:00 GMT" "2007-11-04 07:00:00 GMT"
[11] "2007-11-04 08:00:00 GMT" "2007-11-04 09:00:00 GMT"
[13] "2007-11-04 10:00:00 GMT" "2007-11-04 11:00:00 GMT"
[15] "2007-11-04 12:00:00 GMT" "2007-11-04 13:00:00 GMT"
[17] "2007-11-04 14:00:00 GMT" "2007-11-04 15:00:00 GMT"
[19] "2007-11-04 16:00:00 GMT"

, что не правильно для 01:00 EST. Как решить эту проблему?

1 Ответ

2 голосов
/ 18 января 2020

Возможно, вам придется указать смещение самостоятельно, а затем указать, что с помощью %z при преобразовании в POSIXct.

d2 = as.POSIXct(x = gsub("EDT", "-0400", gsub("EST", "-0500", d)),
                "%m/%d/%Y %H:%M %z",
                tz = "US/Eastern")
attr(d2, "tzone") = "GMT"
d2

DATA

d = c("11/03/2007 18:00 EDT", "11/03/2007 19:00 EDT", "11/03/2007 20:00 EDT", 
"11/03/2007 21:00 EDT", "11/03/2007 22:00 EDT", "11/03/2007 23:00 EDT", 
"11/04/2007 00:00 EDT", "11/04/2007 01:00 EDT", "11/04/2007 01:00 EST", 
"11/04/2007 02:00 EST", "11/04/2007 03:00 EST", "11/04/2007 04:00 EST", 
"11/04/2007 05:00 EST", "11/04/2007 06:00 EST", "11/04/2007 07:00 EST", 
"11/04/2007 08:00 EST", "11/04/2007 09:00 EST", "11/04/2007 10:00 EST", 
"11/04/2007 11:00 EST")
...