151 votes

Convertir l'époque UNIX en objet Date

J'effectue des tracés et des calculs sur des séries chronologiques uniformément distribuées. Les horodatages sont actuellement stockés sous forme d'entiers représentant le nombre de secondes depuis l'époque UNIX (par ex. 1352068320 ), mais Date semblent plus appropriés pour le traçage. Comment puis-je effectuer la conversion ?

J'ai lu ?Date , ?as.Date y ??epoch mais il semble que cette information ait été omise.

262voto

Dirk Eddelbuettel Points 134700

Passer par POSIXct et vous voulez définir un TZ là -- 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 programme à tout moment paquet :

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 tout argument de format ou d'origine .

35voto

Yuriy Barvinchenko Points 1083

Avec library(lubridate) des représentations numériques de la date et de l'heure, enregistrées comme le nombre de secondes écoulées depuis le début de l'année. 1970-01-01 00:00:00 UTC, peuvent être converties en dates à l'aide de la fonction as_datetime() :

lubridate::as_datetime(1352068320)

[1] "2012-11-04 22:32:00 UTC"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X