在R中将UTC转换为日期格式

在R中将UTC转换为日期格式,r,timezone,R,Timezone,我有UTC时间戳。我想在R中将其转换为YYYY/MM/DD格式 例如,1318394558766。我尝试了format命令,但没有成功 感谢您的帮助 谢谢 您可以使用as.POSIXct或as.POSIXlt。但是,您必须知道毫秒数开始的起始日期 as.POSIXct(1318394558766/1000, origin='1970-01-01') > unlist(as.POSIXlt(1318394558766/1000, origin='1970-01-01')) sec

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

例如,
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 
> 
然后,您可以使用
格式
获取所需的YYYY/MM/DD:

format(as.POSIXct(1318394558766/1000, origin='1970-01-01'), format='%Y/%m/%d')

除了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

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

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

+1我曾经惊讶地发现NAs在我的时间价值观中。如果改为夏令时,我得到的小时值是不存在的。
as.Date(utc)            # Date vector
format(utc, "%Y-%m-d")  # character vector