-3

如何将y%m%d%H格式转换为"%Y%m%d %H:%M:%S". 我的日期从 1970 年到 2010 年。

4

2 回答 2

6

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

%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"

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

于 2012-07-23T15:21:05.920 回答
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)详细信息,并在此处以及带有工作示例的各种邮件列表上发布大量帖子。

于 2012-07-23T14:24:05.010 回答