我需要将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>'
答案 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会窒息它。我希望有所帮助。