如何在Ruby中解析不同的日期字符串

时间:2019-04-08 02:30:57

标签: ruby

我遇到了一个问题。如何转换日期字符串:

["2010/03/30", "15/12/2016", "11-15-2012", "20130720"]

收件人:

["20100330", "20161215", "20121215", "20130720"]

2 个答案:

答案 0 :(得分:1)

大多数可以用Date.parse解析。但是它并不能全部理解。

2.4.4 :013 > Date.parse("11-15-2012")
ArgumentError: invalid date
    from (irb):13:in `parse'
    from (irb):13
    from /Users/schwern/.rvm/rubies/ruby-2.4.4/bin/irb:11:in `<main>'

对于任何不了解的内容,您都可以从ArgumentError中解救出来,然后尝试使用strptime进行自己的解析。

require 'date'

def parse_date(date)
  Date.parse(date)
rescue ArgumentError
  Date.strptime(date, '%m-%d-%Y')
end

dates = ["2010/03/30", "15/12/2016", "11-15-2012", "20130720"]
puts dates.map { |date| parse_date(date) }

答案 1 :(得分:0)

dates = ["2010/03/30", "15/12/2016", "11-15-2012", "20130720"]
dates = dates.map{|date| date.tr("/-","")} # runs through every string in the array and replaces the stuff