我已经被问过了,但是我找不到确切的答案。
如果我有一个代表午夜以来毫秒的数字,例如34200577,如何将其转换为R时间?

最佳答案

在午夜构造一个“基准时间”,将给定的毫秒转换为秒后添加为毫秒,并解释为时间:

R> as.POSIXct(as.numeric(ISOdatetime(2013,8,22,0,0,0)) + 34200577/1e3,
+             origin="1970-01-01")
[1] "2013-08-22 09:30:00.576 CDT"
R>


实际上,较短的

R> ISOdatetime(2013,8,22,0,0,0) + 34200577/1e3
[1] "2013-08-22 09:30:00.576 CDT"
R>


ISOdatetime()一样工作,返回一个适当的时间对象,该对象在小数秒内运行,因此我们只应用给定的偏移量。

这似乎是正确的

R> 34200577/1e3       # seconds
[1] 34200.6
R> 34200577/1e3/60    # minutes
[1] 570.01
R> 34200577/1e3/60/60 # hours
[1] 9.50016
R>

09-15 14:01