我有一系列日期,我需要确保这些日期内的年份都早于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
但似乎没有任何事情发生。最终,我无法循环遍历数组中的记录,并操纵其中的必要部分。
答案 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。