2016-02-02 150 views
0

我試圖解析值如何將以毫秒爲單位的UNIX時間轉換爲R中的POSIXlt?

1454181695067-0800 

正如R. DateTime對象這個值是因爲毫秒爲單位。

如果我截斷了時區,我可以解析值的毫秒部分,即

> as.POSIXlt(1454181695, origin = "1970-01-01") 
[1] "2016-01-30 11:21:35 PST" 

但是,是有可能做到這一切在一個函數調用,其中包括毫秒,處理-0800部分是否正確?

我寧願使用默認的R功能來完成它。

+0

「-0800」是什麼意思? – Spacedman

+2

@Spacedman:它可能是UTC的時區偏移量。 –

回答

1

有了您的時間戳作爲一個字符:

x="1454181695067-0800" 

然後用read.fwf分裂,並構建:

> bits = read.fwf(textConnection(x),widths=c(10,3,1,2,2)) 
> as.POSIXlt(bits$V1+bits$V2/1000, origin="1970-01-01") + ifelse(bits$V3=="-",-1,1)* (bits$V4*60*60+bits$V5*60) 
[1] "2016-01-30 11:21:35 GMT" 

雖然毫秒不顯示,它們的存在。如果你打電話t0那麼:

> as.numeric(t0 - as.integer(t0)) 
[1] 0.06699991 
+1

使用'options(digits.secs = 3)'顯示打印POSIXt對象時的毫秒數。 –

相關問題