Удалить часовой пояс во время преобразования POSIXlt в R
У меня есть столбец в моем фрейме данных как datetime (фактор) со значениями как "15-10-2017 16:41:00".
Я хотел, чтобы эти данные были конвертированы как "2017-10-15 16:41:00". Когда я пытаюсь преобразовать это, я получаю часовой пояс также в качестве вывода.
Я пытался использовать tz="", usetz=F, но безрезультатно. Какие-либо предложения?
Код:
as.POSIXlt ("15-10-2017 16:41:00", формат = "%d-%m-%Y %H:%M:%S") [1] "2017-10-15 16:41:00 IST"
1 ответ
Со страницы помощи as.POSIXlt
:
"" текущий часовой пояс
который по умолчанию.
Вот почему это не работает. Вы можете удалить информацию о часовом поясе таким образом, и она не будет отображаться во время печати:
my_datetime <- as.POSIXlt("15-10-2017 16:41:00",format = "%d-%m-%Y %H:%M:%S")
my_datetime$zone <- NULL
my_datetime
но я не понимаю, почему вы хотели бы сделать это. Вы должны преобразовать в GMT, если вы не хотите беспокоиться о часовом поясе. Также lubridate
пакет имеет хороший force_tz
функционировать, если вам нужно форсировать определенные часовые пояса.
Если вы можете хранить дату и время как символ, а не как POSIXlt, вы можете использовать strftime()
:
my_datetime <- as.POSIXlt("15-10-2017 16:41:00",format = "%d-%m-%Y %H:%M:%S")
strftime(my_datetime)
Я так делаю:
strip.tz <- function(dt) {
fmt <- "%Y-%m-%d %H:%M:%S"
strptime(strftime(dt, format = fmt, tz=""), format = fmt, tz="UTC")
}
и вы бы использовали его так:
my_datetime <- as.POSIXct("15-10-2017 16:41:00",format = "%d-%m-%Y %H:%M:%S")
strip.tz(my_datetime)