我有一个"mmddyy"
形式的字符串(例如:"011467"
)。此字符串表示出生日期。现在,我想将它解析为Date对象,所以我使用了:
Date.strptime('011467', '%m%d%y')
然而,这产生了14th January 2067
,而不是预期的14th January 1967
。如何改变strptime的世纪?问题是截至今天的日期,其格式为"071717"
,在这种情况下,17th July 2017
是有效日期。 (在我们的申请中,我们预计不会超过100岁的人 - 但是,如果这样的人会在那里出现,他/她可以很容易地改变出生年份。)
答案 0 :(得分: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)>
# ]