UNIX dönemini Date nesnesine dönüştür


118

Düzgün dağıtılmış zaman serileri üzerinde çizim yapıyorum ve hesaplamalar yapıyorum. Zaman damgaları şu anda UNIX döneminden bu yana geçen saniye sayısını temsil eden tamsayılar olarak saklanmaktadır (örneğin 1352068320), ancak Datenesneler çizim için daha uygun görünmektedir. Dönüşümü nasıl yapabilirim?

Ben okudum ?Date, ?as.Dateve ??epochfakat bu bilgiyi kaçırmış görünüyor.

Yanıtlar:


220

Üzerinden gidin POSIXctve bir TZoraya ayarlamak istiyorsunuz - burada benim (Chicago) varsayılanımı görüyorsunuz:

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> 

Düzenleme: Birkaç yıl sonra, artık her zaman paketi kullanabiliriz :

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

Tüm bunların herhangi bir format veya kaynak argümanı olmadan nasıl çalıştığına dikkat edin .


10
Gibi zaman damgalarım var 1415560016876. epochconverter.com bunu sorunsuz bir tarihe dönüştürür. Yukarıdaki kodunuz bana şöyle şeyler veriyor "46832-11-09 12:47:33 EDT"...
Hack-R

29
Bunu 1000'e bölmeyi deneyin: as.POSIXct(1415560016876/1000, origin="1970-01-01")"2014-11-09 13: 06: 56.875 CST" alır ve saniyelerin (R için olduğu gibi) veya milisaniye beklendiğinden emin olmanız gerekir .
Dirk Eddelbuettel

2
@Shambho: Sadece tersini yapın ve aynı büyüklükte olup olmadığınızı görün:print(as.numeric(Sys.time()))
Dirk Eddelbuettel

2
Her zaman aynıdır: Sahip olduklarınızı ölçeklendirin ve şimdiki zamanla aynı ölçekte gelir : print(as.numeric(Sys.time()), digits=16)benim Linux sistemim altı basamaktır. Ayrıca, olabilir 1000 ile bölmek; bu kesintiye uğramaz.
Dirk Eddelbuettel

1
R değişkeninden sadece yerel saati nasıl çıkarır ve tarihi dökersiniz?
Stratix

17

İçinde library(lubridate), 1970-01-01 00:00:00 UTC'den bu yana saniye sayısı olarak kaydedilen tarih ve saatin sayısal gösterimleri, şu tarihlere dönüştürülebilir as_datetime():

lubridate::as_datetime(1352068320)

[1] "2012-11-04 22:32:00 UTC"
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.