分割一组日期来编写条件

时间:2017-04-07 20:49:32

标签: arrays ruby

我有一系列日期,我需要确保这些日期内的年份都早于1900年。

我的数组看起来像

[
    [0] "1980-10-03",
    [1] "1981-10-03",
    [2] "2001-10-03"
]

现在我能够做到的,这对我来说效果很好,就是选择一个索引并将它们分开来做我需要的东西。像这样

splitted_birth_date = array.first.split("-")

这给了我一个输出

[
    [0] "1980",
    [1] "10",
    [2] "03"
]

我已经去了

splitted_birth_date.first.to_i > 1900?

等能够进行编辑以及完成此任务所需的内容。

我的问题是,我无法遍历数组中的所有元素并将它们拆分。

我试过

array.each do |birth_date|
  birth_date.to_i
end

但似乎没有任何事情发生。最终,我无法循环遍历数组中的记录,并操纵其中的必要部分。

2 个答案:

答案 0 :(得分:3)

array = ["1980-10-03", "1981-10-03", "2001-10-03"] 
yr = 1990

res = array.select{|d| Date.parse(d).year < yr}

答案 1 :(得分:0)

从示例中我假设将返回1900之前(因此不符合要求)的日期(可能为空)数组。最简单的方法是简单地将日期字符串转换为整数,并选择整数小于1900的日期。例如,"1980-10-03".to_i #=> 1980

arr = ["1980-10-03", "1981-10-03", "1899-11-12", "2001-10-03"]

arr.select { |s| s.to_i < 1900 }
  #=> ["1899-11-12"]

请参阅String#to_i