2012-07-23 173 views
-5

如何将y%m%d%H格式转换为"%Y%m%d %H:%M:%S"。我的日期运行从1970年到2010年如何在时间序列数据中将y%m%d%H格式转换为“%Y%m%d%H:%M:%S”

+1

日期< - strptime(Z $ V1,格式= “%Y%M%d%H”,TZ = “GMT”) – user1537175 2012-07-23 14:18:17

+0

使用'strptime'或'format' – Andrie 2012-07-23 14:19:34

+1

你上面所建议的是什么,似乎对我的工作:作为一个小例子(提示,见http://tinyurl.com/reproducible-000):'strptime(“2012 5 10 13”,format =“%Y%m%d%H”)''给出'[1 ]“2012-05-10 13:00:00”' – 2012-07-23 14:23:04

回答

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)的详细信息,并且bazillion在此处和各种邮件列表上列出工作示例。

+0

%Y%m% d%H与这种格式的工作,但格式是%y%m%d%H例如00010100(2000010100) – user1537175 2012-07-23 14:32:51

+0

根据我的测试以下它不是说OP有'Date'类型,而不是'POSIX * t当它在午夜时间有一个日期时,似乎将格式设置为跳过H/M/S。 – 2012-07-23 15:21:52

+0

这也是可能的,但是因为他从来没有通过可复制的例子告诉我们,我们不能说真的,我们可以吗? – 2012-07-23 15:24:22

4

从注释部分去(这将是很好,如果你可以相应地修改问题),似乎这不是格式化(%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" 

与一种midn的载体ight和一个非午夜时间:

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

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