如果不是零,则从救援中解脱出来

时间:2016-03-17 22:04:55

标签: ruby datetime ruby-on-rails-4 exception exception-handling

我试图在成功解析日期时突破这个循环。

def bad_date(date)
  BAD_DATES.each do |bad_date|
    begin
      DateTime.strptime(date.tr(' ', '').tr(':', ''), bad_date)
    rescue ArgumentError
      return nil # else return good date?
    end
  end
end

BAD_DATES看起来像这样:

BAD_DATES = ['%H%M%p%m/%d/%Y', '%H%M%p%d/%m/%Y', '%l%M%m/%d/%Y',
           '%H%p%m/%d/%Y', '%H%M%m/%d/%Y'].freeze

如何退回第一个"好"该方法的日期?

1 个答案:

答案 0 :(得分:2)

这个怎么样?:

def bad_date(date)
  BAD_DATES.each do |bad_date|
    begin
      return DateTime.strptime(date.tr(' ', '').tr(':', ''), bad_date)
    rescue ArgumentError
      # keep going
    end
  end
  return nil
end