2017-04-07 39 views
0

我有日期的數組,我需要確保這些日期內年都早於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 

,但似乎沒有發生。最終,我無法循環訪問數組中的記錄,並操縱其中的必要部分。

+1

爲什麼不使用['#map'](https://ruby-doc.org/core-2.4.1/Array.html#method-i-map)方法? – DiodonHystrix

+1

使用內置的['Date'](http://ruby-doc.org/stdlib-2.4.1/libdoc/date/rdoc/Date.html)類會更簡單。 –

+0

沒有想到,但#map肯定做我需要做的。謝謝@DiodonHystrix – kdweber89

回答

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

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

哦哇!這比我期待的要多得多!謝謝你,先生! – kdweber89

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