期待Time.zone.parse引发无效日期的错误,但返回零
问题描述:
为什么Time.zone.parse('invalid')
引发错误,而Time.parse('invalid')
呢?期待Time.zone.parse引发无效日期的错误,但返回零
实施例使用Rails 4.2.7.1
>> Time.zone.parse('invalid')
nil
>> Time.parse('invalid')
ArgumentError: no time information in "invalid"
from D:/softwares/ruby/Ruby22/lib/ruby/2.2.0/time.rb:252:in `make_time'
from D:/softwares/ruby/Ruby22/lib/ruby/2.2.0/time.rb:364:in `parse'
答
这两种方法都调用Date._parse
其返回{}
如果没有日期可以提取。
Time.zone.parse
在那里停止并在结果为空时返回。 Time.parse
打电话给make_time
,如果不能生成日期,则会引发错误。
看看方法的实际源代码,你会明白:) [link1](https://ruby-doc.org/core-2.2.2/Time.html#method-i-zone)和[link2](https://ruby-doc.org/stdlib-2.1.1/libdoc/time/rdoc/Time.html#method-c-parse) –
谢谢,我理解这种行为。但我不明白*为什么他们选择这样做。 – seza443