Ruby on rails 在Date.strtime中更改yy年的世纪
我有一个字符串,格式为Ruby on rails 在Date.strtime中更改yy年的世纪,ruby-on-rails,ruby,date,Ruby On Rails,Ruby,Date,我有一个字符串,格式为“mmddyy”(例如:“011467”)。此字符串表示出生日期。现在,我想将其解析为日期对象,因此我使用了: Date.strptime('011467', '%m%d%y') 然而,这产生了2067年1月14日,而不是预期的1967年1月14日。如何更改strtime的世纪?问题在于截止到今天的日期,其格式可能为“071717”,在这种情况下2017年7月17日是一个有效日期。(在我们的应用程序中,我们不希望年龄超过100岁的人——但是,如果这种人出现在那里,他/她可
“mmddyy”
(例如:“011467”
)。此字符串表示出生日期。现在,我想将其解析为日期对象,因此我使用了:
Date.strptime('011467', '%m%d%y')
然而,这产生了2067年1月14日,而不是预期的1967年1月14日。如何更改strtime的世纪?问题在于截止到今天的日期,其格式可能为“071717”
,在这种情况下2017年7月17日是一个有效日期。(在我们的应用程序中,我们不希望年龄超过100岁的人——但是,如果这种人出现在那里,他/她可以很容易地更改出生年份)。不接受格式,但接受格式
此外,您还需要手动调整年份
%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)>
# ]
%w | 011467 011417 |。地图do | s|
Date.strtime(
s、 gsub(/\d{2}\z/)do|m|
(m.to_i)