2009-09-01 8 views
4

私のコードで動的なTime.localで時間を作ろうとしています。毎月初めに渡す値はTime.local(2009、9、-1、0)です。 PHPでは、これは前の月の最後の日に時間を設定します。ルビーでは、私はちょうど "ArgumentError:範囲外の引数"を取得します。Rubyの日付引数が範囲外です

私は間違った方法などを使用していますか?ありがとう。

答えて

10

Timeの代わりにDateTimeクラスを使用する必要があります。 (あなたはrequire 'date'に持っているし、最初のactivesupport宝石をインストールすることがあります。)

それははるかに汎用性Timeよりも、あなたがDateTime.civil(2009,9 - 1,-1,0)で欲しいものだけでありません。

この日の-1を渡すと、2番目の引数からの月の最終日の日付が返されるため、現在の月から1を引く必要があります。

あなたがRailsにいる場合は、DateTime.civil(2009,9,1,0) - 1.dayを実行して、わかりやすいコードを得ることができます。

+0

これは、現在の月の最終日に日付を設定します。 – jgre

+0

はい: >> DateTime.civil(2009,9、-1) => Wed、30 Sep 2009 00:00:00 +0000 ほぼありました! – sebastyuiop

+0

ああ、小さな間違いがありました。元の回答を編集します。 – mrueg