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

如何在Ruby中解析不同的日期字符串,ruby,Ruby,我被一个问题困住了。如何转换日期字符串: ["2010/03/30", "15/12/2016", "11-15-2012", "20130720"] 致: 大多数都可以用语法解析。但它并不理解所有这些 2.4.4 :013 > Date.parse("11-15-2012") ArgumentError: invalid date from (irb):13:in `parse' from (irb):13 from /Users/schwern/.rvm/ru

我被一个问题困住了。如何转换日期字符串:

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

大多数都可以用语法解析。但它并不理解所有这些

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>'
日期=[2010/03/30、2015/12/2016、11-15-2012、20130720] dates=dates.map{| date | date.tr/-,}遍历数组中的每个字符串并替换内容
2016215不应该是20161215吗?11-15-2012,20130720代表什么?更新的问题这里有一百万个关于在Ruby中格式化日期的问题;他们都没有给你提供任何关于这个问题的见解吗?你有没有尝试过自己解决这个问题,你可以用代码给我们看?“为我做我的工作”和“我想做X,但当我尝试Y时,我得到了Z。我如何做X?”之间有很大的区别。Date.parse我质疑是否应该使用parse,考虑到它可能会导致一些非常奇怪的结果。=>。如果日期可能是几种格式之一,那么将strtime与多个格式字符串一起使用不是更好吗?另一个:Date.parse当你真的需要007时,他在哪里@CarySwoveland我同意,如果已知一组可能的格式。可能是各种各样的strptimes,有一个解析回退。
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>'
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) }