web-dev-qa-db-fra.com

Convertir un objet d'époque UNIX en date

Je trace et effectue des calculs sur des séries chronologiques uniformément réparties. Les horodatages sont actuellement stockés sous forme d’entiers représentant le nombre de secondes écoulées depuis l’époque UNIX (par exemple, 1352068320), mais les objets Date semblent plus appropriés pour le traçage. Comment puis-je faire la conversion?

J'ai lu ?Date, ?as.Date et ??epoch, mais semble avoir manqué cette information.

103
Andreas

Allez via POSIXct et vous voulez définir un TZ ici - vous voyez mon défaut (Chicago):

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> 

Edit: Quelques années plus tard, nous pouvons maintenant utiliser le package à tout moment :

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

Notez comment tout cela fonctionne sans aucun format ni aucun argument d'origine .

199
Dirk Eddelbuettel

Dans la bibliothèque de lecture, la date et l’heure sont enregistrées sous forme de nombre de secondes depuis le 1970-01-01 00:00:00 UTC. Donc tu peux faire

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