为什么DateTime.parse无法将此无效输入识别为无效日期?

Red*_*ion 0 ruby datetime

任何人都可以解释为什么 DateTime.parse返回这个,而不是失败,这是我在传递无效日期时所期望的行为?

require 'date'
DateTime.parse "X5pxmDwewKlIgJ_G0HX6TI2sMoY1XOgOcz09oQ4RO9U"
=> #<DateTime: 2017-01-09T00:00:00+00:00 ((2457763j,0s,0n),+0s,2299161j)>
Run Code Online (Sandbox Code Playgroud)

我试图只留下数字,但随后它给出了ArgumentError: invalid date,我也尝试修改一点字符串,但同样,它失败了:

DateTime.parse "X5px4fGHewKlIgJ_G0635I2sMoY1XOgOcz09oQ4ROA1"
ArgumentError: invalid date
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

Ste*_*fan 8

parse努力提取日期.您可以使用Date#_parse它来查看它找到的内容:

require 'date'
Date._parse 'X5pxmDwewKlIgJ_G0HX6TI2sMoY1XOgOcz09oQ4RO9U'
#=> {:hour=>0, :mday=>9}
Run Code Online (Sandbox Code Playgroud)

:hour=>0 是由于 0H(H =小时)

Date._parse '0H'
#=> {:hour=>0}
Run Code Online (Sandbox Code Playgroud)

而且:mday=>9是因为09:

Date._parse '09'
#=> {:mday=>9}
Run Code Online (Sandbox Code Playgroud)