2017-07-17 50 views
1

我有一個形式爲"mmddyy"(例如:"011467")的字符串。此字符串表示出生日期。現在,我想將其解析到一個Date對象,所以我用:在Date.strptime中更改yy年的世紀

Date.strptime('011467', '%m%d%y') 

然而,由此產生14th January 2067,而不是預期的14th January 1967。我怎樣才能改變這個世紀?問題是迄今爲止的日期,其格式可能爲"071717",在這種情況下,17th July 2017是有效的日期。 (在我們的申請中,我們不希望百歲以上的人 - 但是,如果這樣的人會在那裏發生,他/她可以輕易改變出生年份)。

回答

1

Date.parse不接受格式,Date.strptime

此外,您需要手動調整年份。

%w|011467 011417|.map do |s| 
    Date.strptime(
    s.gsub(/\d{2}\z/) do |m| 
     (m.to_i <= Date.today.year.to_s[/\d{2}\z/].to_i ? "20" : "19") << m 
    end, '%m%d%Y') 
} 
#⇒ [ 
# [0] #<Date: 1967-01-14 ((2439505j,0s,0n),+0s,2299161j)>, 
# [1] #<Date: 2017-01-14 ((2457768j,0s,0n),+0s,2299161j)> 
# ]