我正在寻找一个紧凑的解决方案来转换来自航空公司预订系统(像Sabre / Galileo / Amadeus这样的GDS)的日期 - 例如。 23JUN到标准日期,但需要在Ruby中快速确定年份。 (仅供参考 - 在这些系统日期上,从今天起最多只能延迟355天。因此,如果今天是2012年12月12日,那么将12MAY解释为2013-05-12而不是2012-05-12并不存在歧义。如果今天是2012年12月25日,日期输入01JAN,将来是01JAN2013,如果今天是2012年7月21日,01JAN的输入日期也将变为01JAN 2013,因为它是当年的过去日期。 / p>
所以我可以这样做:
t = DateTime.now
crsdate = DateTime.strptime("23JAN","%d%b")
if crsdate >= t
# Year is current year
else
# Year is next year
end
有更优雅的方式吗?
答案 0 :(得分:1)
这个怎么样?
t = DateTime.now
crsdate = DateTime.strptime("23JAN","%d%b")
crsdate >= t ? crsdate >>= 12 : crsdate
如果您不想修改crsdate
,因为您只想返回此内容,请使用>>
代替>>=
。