Преобразование эпохи UNIX в объект Date

Я рисую и выполняю вычисления на равномерно распределенных временных рядах. Временные метки в настоящее время хранятся в виде целых чисел, представляющих количество секунд с момента UNIX (например, 1352068320), но Date объекты кажутся более подходящими для построения графика. Как я могу сделать преобразование?

Я читал ?Date, ?as.Date и ??epoch, но, похоже, пропустил эту информацию.

Ответ 1

Перейдите через POSIXct, и вы хотите установить там TZ - здесь вы видите мой (Чикаго) по умолчанию:

R> val <- 1352068320
R> as.POSIXct(val, origin="1970-01-01")
[1] "2012-11-04 22:32:00 CST"
R> as.Date(as.POSIXct(val, origin="1970-01-01"))
[1] "2012-11-05" 
R> 

Изменить: через несколько лет мы теперь можем использовать пакет anytime:

R> library(anytime)
R> anytime(1352068320)
[1] "2012-11-04 16:32:00 CST"
R> anydate(1352068320)
[1] "2012-11-04"
R> 

Обратите внимание, как все это работает без аргументов формата или источника.

Ответ 2

В смазанной библиотеке дата и время сохраняются как количество секунд с 1970-01-01 00:00:00 UTC. Так что вы можете сделать

    library(lubridate)
    as_datetime(1352068320)
[1] "2012-11-04 22:32:00 UTC"