UNIXエポックを日付オブジェクトに変換


118

私は均一に分布した時系列にプロットして計算を実行しています。タイムスタンプは現在、UNIXエポック(例:)からの秒数を表す整数として格納されています1352068320が、Dateオブジェクトはプロットにより適しているようです。どうすれば変換できますか?

私が読んだ?Date?as.Dateそして??epoch、しかし、その情報を見逃しているように見えます。

回答:


220

経由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> 

これがフォーマットや原点引数なしでどのように機能するかに注意してください。


10
のようなタイムスタンプがあり1415560016876ます。epochconverter.comは、これを問題のない日付に変換します。上記のコードを使用すると、次のような結果が得られます"46832-11-09 12:47:33 EDT"...
Hack-R

29
それを1000で除算してみてください:as.POSIXct(1415560016876/1000, origin="1970-01-01")「2014-11-09 13:06:56.875 CST」を取得し、秒数が予想される(Rの場合)かミリ秒かを確認する必要があります
Dirk Eddelbuettel 2014年

2
@Shambho:ちょうど逆を行うと、あなたは同じ大きさの順にしているかどうかを確認:print(as.numeric(Sys.time()))
ダークEddelbuettel

2
それは常に同じです。現在の時間 と同じスケールで到達するように、必要なものをスケーリングしますprint(as.numeric(Sys.time()), digits=16)。6桁で、私のLinuxシステムです。また、1000で割ることもできます。これは切り捨てられません。
Dirk Eddelbuettel

1
R変数から現地時間だけを抽出して日付をダンプするにはどうすればよいでしょうか。
Stratix

17

ではlibrary(lubridate)、1970-01-01 00:00:00 UTC以降の秒数として保存された日付と時刻の数値表現を、次のように日付にまとめることができますas_datetime()

lubridate::as_datetime(1352068320)

[1] "2012-11-04 22:32:00 UTC"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.