2012-05-11 3 views
0

航空会社予約システム(Sabre/Galileo/AmadeusのようなGDS)から来る日付を変換するコンパクトなソリューションを探しています年 - 例えば。 23JUNを標準の日付にする必要がありますが、Rubyですぐに決定する必要があります。 (これらのシステムの日付は、今日から最大355日しかないため、2012年12月12日が2012年12月12日であると仮定して、12月を2012-05-05の代わりに2013-05-12と解釈する曖昧さはありません)。今日が2012年12月25日で01JANとして日付が入力されている場合、これは01JAN2013になります。今日が21JUL 2012の場合、01JANの入力日付も今年の過去日付である01JAN 2013になります。Rubyで正しい年を適用したDDMON(例:23JAN)の日付形式を完全な日付に変換

だから私は次のような何かを行うことができます。

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

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

これを行うにはよりエレガントな方法はありますか?

答えて

1

これはいかがですか?

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

あなただけの代わりに>>=>>を使用し、これを返すようにしたいので、あなたはcrsdateを変更する必要がない場合。

+0

Activesupportには、「過去?」や「未来」などのFWIWがあります。 – steenslag

+0

私は知っていますが、Railsタグはなかったので、私は純粋なRuby答えを出しました。 –

+0

マイケルとsteenslagに感謝 - これは実際に2.3.5のdatanoise webservice apiを実装しているコントローラのコードの一部です。過去の使用方法に興味がありますか? - まだレール初心者です。 – Surge

関連する問題