从UTC转换为R中的日期格式

时间:2012-06-27 19:57:02

标签: r timezone

我有一个UTC时间戳。我想在R中将其转换为YYYY / MM / DD格式。

例如,1318394558766。我试了format命令失败了。

感谢任何帮助。

谢谢!

3 个答案:

答案 0 :(得分:8)

您可以使用as.POSIXctas.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')

答案 1 :(得分:2)

除了Justin的回答(因为我无法发表评论),您可能希望将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

答案 2 :(得分:1)

另一种解决方案是使用.POSIXct

utc <- .POSIXct(1318394558766/1000, tz="UTC")

然后您可以轻松地将utc转换为日期或字符向量:

as.Date(utc)            # Date vector
format(utc, "%Y-%m-d")  # character vector
相关问题