2012-06-27 34 views

回答

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') 
+0

@ttmaccer好點的,因此編輯 – Justin

+0

@賈斯汀,謝謝你!這正是我需要的。 – notrockstar

2

除了賈斯汀的答案(因爲我不能作出評論),你可能要添加的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 
+0

+1我曾經驚訝於在我的時間價值中找到新生。原來,如果您改變爲夏令時,我的數值就不存在了。 – Roland

1

另一種解決方案是使用.POSIXct

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

然後你就可以很容易地轉換到utc日期或字符向量:

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