2013-02-15 141 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