0

我正在寻找一种紧凑的解决方案来转换来自没有年份的航空公司预订系统(GDS,如 Sabre/Galileo/Amadeus)的日期 - 例如。23JUN 是一个标准日期,但需要快速确定年份以在 Ruby 中添加。(仅供参考 - 在这些系统上,日期最多只能是从今天起 355 天。因此,假设今天是 2012 年 5 月 12 日,将 12MAY 解释为 2013-05-12 而不是 2012-05-12 并没有歧义)。如果今天是 2012 年 12 月 25 日,并且日期输入为 01JAN,那么这将是未来的 01JAN2013,如果今天是 2012 年 7 月 21 日,那么输入的日期 01JAN 也将变为 01JAN 2013,因为它是当年的过去日期。

所以我可以做类似的事情:

t = DateTime.now
crsdate = DateTime.strptime("23JAN","%d%b")

if crsdate >= t
  # Year is current year
else
  # Year is next year
end

有没有更优雅的方式来做到这一点?

4

1 回答 1

1

这个怎么样?

t = DateTime.now
crsdate = DateTime.strptime("23JAN","%d%b")
crsdate >= t ? crsdate >>= 12 : crsdate

如果您不需要修改crsdate,因为您只想返回它,请使用>>而不是>>=.

于 2012-05-11T19:50:17.943 回答