2013-02-15 136 views
9

這是一個Ruby的問題(​​1.9.1)紅寶石日期時間字符串轉換爲日期時間毫秒

我有一個字符串以下日期和時間:

29 Sep 2013 12:25:00.367 

我首先要將其從字符串轉換爲日期和時間,然後 向其添加10秒並將其轉換回與上面的 相同的字符串格式。

我寫了這個代碼:

format = "%d %b %Y %H:%M:%S" 
date_time = "29 Sep 2013 22:11:30.195" 
parsed_time = DateTime.strptime(date_time, format) 
puts " new date time is #{parsed_time}" 

,輸出:

new date time is 2013-09-29T22:11:30+00:00 

,我沒有看到 「195」。我試圖format = "%d %b %Y %H:%M:%S.%3N",這給:

fileOpTest:34:in `strptime': invalid date (ArgumentError) from fileOpTest:34:in `<main>' 
+1

您應該升級您的Ruby版本,v1.9.1是舊的和buggy。 – 2013-02-16 00:51:25

+0

與紅寶石2.1發生同樣的問題:b = DateTime.current.strftime(「%Y-%m-%d%H:%M:%S.%3N」); DateTime.strptime(b,「%Y-%m-%d%H:%M:%S.%6L」)產生相同的錯誤 – 2014-05-08 18:59:02

回答

15

這可以非常容易地使用Time class來完成。您可以通過添加秒來添加到時間。然後使用#strftime

t= Time.parse('29 Sep 2013 12:25:00.367') 
=> 2013-09-29 12:25:00 -0400 
t=t + 10 
=> 2013-09-29 12:25:10 -0400 
t.strftime("%d %b %Y %H:%M:%S.%3N") 
=> "29 Sep 2013 12:25:10.367" 
+0

嗨,我得到一個「未定義的方法'解析'時間:類(NoMethodError) 「錯誤。你有什麼版本的Ruby?我有1.9.1謝謝阿莎 – 2013-02-15 23:11:25

+1

嗨,我添加'需要'時間',它的確奏效。非常感謝。 – 2013-02-16 00:42:46

+0

如果邁克爾能夠解決您的問題,請點擊左側的複選標記以接受答案。 – 2013-02-16 03:29:12