R: Безумное преобразование времени Posix (Unix)

Время Unix - 1435617000.

as.Date(1435617000,origin="01-01-1970")
[1] "3930586-11-23"

Что неверно. Я пытаюсь (а) получить правильную дату, которая для каждого конвертера эпох составляет GMT: Mon, 29 Jun 2015 22:30:00 GMT.

Как мне заставить R сообщать мне месяц, день, год, час, минуту и ​​секунду? Спасибо.


person tomchi    schedule 23.07.2015    source источник


Ответы (1)


Я думаю, причина этого в том, что as.Date преобразует аргументы в объекты даты класса. В этом случае вам не нужна дата, а объект класса POSIXct, потому что ваш ввод, вектор x, содержит другую информацию, которой as.Date не может управлять. Другая проблема, которая может возникнуть даже с правильной функцией, заключается в том, что если вы не укажете правильный часовой пояс с аргументом tz (за исключением случая, когда ваш часовой пояс совпадает с исходным временем).

Следующий код выполняет свою работу.

x <- 1435617000
as.POSIXct(x, origin = "1970-01-01", tz ="GMT")
[1] "2015-06-29 22:30:00 GMT"

Используйте as.Date

На тот случай, если вам нужна только дата, но у вас есть полное время Unix, например x, вам нужно просто разделить на 86400 (то есть количество секунд в день!), Чтобы получить только правильную дату.

 as.Date(x/86400L, origin = "1970-01-01")
[1] "2015-06-29"

Еще одна важная деталь

Аргумент origin должен быть предоставлен с YYYY-MM-DD, а не так, как вы DD-MM-YYYY Я не уверен, но я думаю, что первый является единственным приемлемым и правильным способом.

person SabDeM    schedule 23.07.2015