Удалить часовой пояс во время преобразования 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)
Другие вопросы по тегам