将Ruby日期时间字符串转换为带毫秒的日期时间

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 已经过时且存在漏洞。 - Andrew Marshall
Ruby 2.1也会出现同样的问题:b = DateTime.current.strftime("%Y-%m-%d %H:%M:%S.%3N"); DateTime.strptime(b, "%Y-%m-%d %H:%M:%S.%6L") 产生相同的错误。 - Ben Wheeler
1个回答

15
使用时间类非常容易实现。您可以通过添加秒数来增加时间。然后使用#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"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接