如何将y%m%d%H格式转换为"%Y%m%d%H:%M:%S"在时间序列数据

时间:2012-07-23 14:06:58

标签: r time-series

如何将y%m%d%H格式转换为"%Y%m%d %H:%M:%S"。我的约会时间是从1970年到2010年。

2 个答案:

答案 0 :(得分:6)

部分来自评论(如果您可以相应地修改问题会很好),似乎这不是格式化(%y vs %Y或间距/分隔符)的情况,但strptime / POSIX*t会自动设置格式,以便在指定“午夜”时间时跳过小时/分钟/秒。 (这是我目前基于以下示例的猜测,但我可能错过了一些东西。)

%y,非午夜时间:

> str(strptime("00020304",format="%y%m%d%H"))
 POSIXlt[1:1], format: "2000-02-03 04:00:00"

同上,午夜时间:

> str(strptime("00020300",format="%y%m%d%H"))
 POSIXlt[1:1], format: "2000-02-03"

午夜时间(有空格)

> str(strptime("00 02 03 00",format="%y %m %d %H"))
 POSIXlt[1:1], format: "2000-02-03"

一个有一个午夜和一个非午夜时间的向量:

> str(strptime(c("00020300","00020304"),format="%y%m%d%H"))
 POSIXlt[1:2], format: "2000-02-03 00:00:00" "2000-02-03 04:00:00"

所以看起来Dirk的答案是要走的路。

答案 1 :(得分:2)

试试这个:

R> Sys.Date()
[1] "2012-07-23"
R> format(Sys.Date())
[1] "2012-07-23"
R> format(Sys.Date(), "%Y-%m-%d %H:%M:%S")
[1] "2012-07-23 00:00:00"
R> 

因为您可能有Date类型,根据定义,它没有小时/分钟/秒信息 - 请使用POSIXct。请参阅help(DateTimeClasses)详细信息,以及此处和各种邮件列表中的大量帖子以及工作示例。