DateTime.strptime错误

时间:2016-05-16 01:19:01

标签: ruby

我需要将Array data2转换为DateTime。 字符串数据有效。有谁知道我为什么会遇到Array.to_s的错误,如下所示?

require 'date'

data = "May  3 07:02:34"  
puts DateTime.strptime(data, '%b %d %H:%M:%S')<br>
puts data<br>
puts data.class

data2 = ["May  3 07:02:34"]

puts data2

puts data2.class

puts DateTime.strptime(data2.to_s, '%b %d %H:%M:%S')

输出:

2016-05-03T07:02:34+00:00
May  3 07:02:34
String  
May  3 07:02:34  
Array  
hello.rb:13:in `strptime': invalid date (ArgumentError)
    from hello.rb:13:in `<main>'

1 个答案:

答案 0 :(得分:0)

您正在将数组转换为字符串,但实际上只想在第一个元素处引用该字符串。将你的电话改为strptime:

puts DateTime.strptime(data2[0], '%b %d %H:%M:%S')

这应该用strptime解决问题。

使用Array#to_s将整个数组渲染为字符串。在这种情况下,结果如下:

"[\"May 3 07:02:34\"]"

你想要的(并且索引为0)是这样的:

"May 3 07:02:34"

差异很重要,这就是为什么strptime会窒息它。我希望有所帮助。