2013-01-02 11 views
43

私は新しいオブジェクトDate.newをargs(年、月)で作成しました。ルビを作成した後、デフォルトでこのオブジェクトに01の日数を追加しました。最初の日を追加する方法はありますか?私はargとして渡された月の最終日ですか(たとえば、28日が02monthの場合は31、01monthの場合は31)。月の最後の日をRubyで取得

答えて

77

使用Date.civilDate.civil(y, m, d)またはそのエイリアス.new(y, m, d)

、新しいDateオブジェクトを作成することができます。曜日(d)と月(m)の値は負の値にすることができます。この場合、年末と月末からそれぞれ逆算されます。

=> Date.civil(2010, 02, -1) 
=> Sun, 28 Feb 2010 
>> Date.civil(2010, -1, -5) 
=> Mon, 27 Dec 2010 
+2

おかげで、私はこの方法を使用 '18] PRY(主)> Date.new(2012,11、-1) =>金、11月30日2012' –

+0

すでに完了しています.... –

+0

もう1つ質問、月の日数を取得する方法はありますか? –

48

あなたもactivesupportののヘルパーend_of_monthを使用することができ月末を取得します。

# Require extensions explicitly if you are not in a Rails environment 
require 'active_support/core_ext' 

p Time.now.utc.end_of_month # => 2013-01-31 23:59:59 UTC 
p Date.today.end_of_month # => Thu, 31 Jan 2013 

​​については、Rails APIドキュメントを参照してください。

+0

' require 'active_support/core_ext'は、 'days'、' months'レールのように動作します、ありがとうございます。 – overallduka

+0

アクティブなサポートで見つからない4.2.4。それは時代遅れのように見えます。 –

+1

@ZekeFast私は 'end_of_month'は何も必要とせずにレール4で動作すると思います – jtmarmon

11

だから私は...ここに同じことをGoogleに

を探していたRUBY-DOCでドキュメント を読んだ後、私の解決策だったので、私は上記と満足していませんでした:

10/31/2014

を取得します

Date.new(2014,10,1).next_month.prev_day

+0

また、明確にするために、Rubyを使用しています...レールではありませんので、そこからヘルパー関数を使用することはできません。 – Jumpers

+0

これは機能しません。 'Date.new(2016,3,4).next_month.prev_day = Sun、2014年4月3日' – RandyTek

+0

@RandyTekあなたが見ている戻り値は、あなたのコメントで使用している入力値に適しています。書式はDate.new(年、月、日)です。あなたは2011年3月3日から始まります。 'next_month'メソッドは、それを4/4/2016に移動します。 'prev_day'メソッドは、2014年4月3日に返されます。あなたは何を達成しようとしていますか? – Jumpers

関連する問題