2012-07-23 175 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" 

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