我试图解析值
1454181695067-0800
作为R中的日期时间对象。此值是自纪元以来的毫秒数。
如果我截断我可以解析的值的时区和毫秒部分,即
> as.POSIXlt(1454181695, origin = "1970-01-01")
[1] "2016-01-30 11:21:35 PST"
但是,是否可以在一个函数调用中完成所有操作,包括毫秒并正确处理 -0800 部分?
我更喜欢使用默认的R功能。
答案 0 :(得分: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