我有一个 UTC 时间戳。我想把它转换成 YYYY/MM/DD 格式R。
例如,1318394558766。我尝试format命令失败。
任何帮助表示赞赏。
谢谢!
您可以使用as.POSIXct或as.POSIXlt。但是,您必须知道您的毫秒数开始的原始日期。
as.POSIXct(1318394558766/1000, origin='1970-01-01')
> unlist(as.POSIXlt(1318394558766/1000, origin='1970-01-01'))
    sec     min    hour    mday     mon    year    wday    yday   isdst 
 38.766  42.000  21.000  11.000   9.000 111.000   2.000 283.000   1.000 
> 
然后您可以使用format获取所需的 YYYY/MM/DD:
format(as.POSIXct(1318394558766/1000, origin='1970-01-01'), format='%Y/%m/%d')
    除了贾斯汀的回答(并且因为我无法发表评论)之外,您可能还想将 tz 添加到转换中。
as.POSIXct(1318394558766/1000, origin='1970-01-01')
[1] "2011-10-12 05:42:38 EST"
as.POSIXct(1318394558766/1000, origin='1970-01-01', tz="UTC")
[1] "2011-10-12 04:42:38 UTC"
有关更多信息,请参阅;
?timezone
    另一种解决方案是使用.POSIXct:
utc <- .POSIXct(1318394558766/1000, tz="UTC")
然后您可以轻松转换utc为日期或字符向量:
as.Date(utc)            # Date vector
format(utc, "%Y-%m-d")  # character vector