изменить часовой пояс в R без возврата к исходному часовому поясу - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть df с такими датами и временем:

df <- data.frame(c("2018-09-28 00:00:00Z","2018-09-29 01:00:00Z","2018-09-30 10:00:00Z"))
names(df) <- "startTime"

Даты и время указаны в часовом поясе UTC, поэтому я форматирую так:

df$startTime <- as.POSIXct(df$startTime, tz="Etc/UTC")

Я тогдахочу поместить их по нью-йоркскому времени, например:

attributes(df$startTime)$tzone <- "America/New_York"

Теперь я хочу извлечь только дату, используя as.Date.К сожалению, приведенный ниже код возвращает даты в часовой пояс UTC.Обратите внимание, как при запуске приведенного ниже кода даты, которые были до полуночи по нью-йоркскому времени, изменились на даты после полуночи по UTC.

df$startTime <- as.Date(df$startTime)

Почему это происходит и как я могу поддерживать часовой поясчто я хочу?

1 Ответ

0 голосов
/ 25 сентября 2018

as.Date к сожалению, по умолчанию UTC, как указано в документации, поэтому вы можете вручную указать часовой пояс, чтобы заставить его работать.В качестве альтернативы вы можете использовать экстрактор date() из lubridate, который лучше подходит для часовых поясов.

df <- data.frame(c("2018-09-28 00:00:00Z","2018-09-29 01:00:00Z","2018-09-30 10:00:00Z"))
names(df) <- "startTime"
df$startTime <- as.POSIXct(df$startTime, tz="Etc/UTC")
attributes(df$startTime)$tzone <- "America/New_York"

as.Date(df$startTime, tz="America/New_York")
#> [1] "2018-09-27" "2018-09-28" "2018-09-30"
lubridate::date(df$startTime)
#> [1] "2018-09-27" "2018-09-28" "2018-09-30"

Создан в 2018-09-25 пакетом prex (v0.2.0).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...