期望Time.zone.parse引发无效日期错误但返回nil

时间:2017-03-01 11:25:18

标签: parsing ruby-on-rails-4 exception timezone

Time.zone.parse('invalid')为什么不会Time.parse('invalid')引发错误?

使用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'

1 个答案:

答案 0 :(得分:2)

如果无法提取日期,则两种方法都会调用Date._parse,返回{}

Time.zone.parse停在那里,如果结果为空则返回。 Time.parse调用make_time,如果无法生成日期,则会引发错误。