任何人都可以解释为什么DateTime.parse
会返回这个而不是失败,这是我在传递无效日期时所期望的行为吗?
require 'date'
DateTime.parse "X5pxmDwewKlIgJ_G0HX6TI2sMoY1XOgOcz09oQ4RO9U"
=> #<DateTime: 2017-01-09T00:00:00+00:00 ((2457763j,0s,0n),+0s,2299161j)>
我试图只留下数字,但后来它给了ArgumentError: invalid date
,我也尝试修改了那个字符串,但是又失败了:
DateTime.parse "X5px4fGHewKlIgJ_G0635I2sMoY1XOgOcz09oQ4ROA1"
ArgumentError: invalid date
有什么想法吗?
答案 0 :(得分:8)
parse
努力提取日期。您可以使用Date#_parse
查看它找到的内容:
require 'date'
Date._parse 'X5pxmDwewKlIgJ_G0HX6TI2sMoY1XOgOcz09oQ4RO9U'
#=> {:hour=>0, :mday=>9}
:hour=>0
归因于0H
(H =小时)
Date._parse '0H'
#=> {:hour=>0}
而:mday=>9
是因为09
:
Date._parse '09'
#=> {:mday=>9}
答案 1 :(得分:1)
您可能想查看Chronic gem。它可以解析各种各样的模式。虽然肯定会有漏洞,但它会对你的字符串返回一个合理的响应:
[4] (pry) main: 0> Chronic.parse('X5pxmDwewKlIgJ_G0HX6TI2sMoY1XOgOcz09oQ4RO9U')
nil
看看&#34;用法&#34;和&#34;例子&#34;文档中的部分,以了解它可以做什么。令人印象深刻。