2009-10-26 13 views
16

ルビーで私はフォーマットを日付として取得しようとしています。2009-10-01今月の初日に最も効率的な方法は何ですか?

私は現在の日付(2009-10-26)をとり、その日を "01"に変更します。

私はこれを行う方法を知っていますが、これを取り除くために最短の方法がコードワイズであるのは不思議でした。

答えて

25
Time.parse("2009-10-26").strftime("%Y-%m-01") 
+4

これは単なる例です...任意の変数がその文字列を置き換えることができます.. – Starkers

+0

ありがとう...未来から書くとこれは私のために働いた)= –

10
require 'date'  
now = Date.today 
Date.new(now.year, now.month, 1) 
+2

引用符で囲まれていない整数の先行ゼロに注意してください:それは8進表記です。 08または09を入力するまでうまく動作します。 – jes5199

+0

現在の問題と1日の問題を修正しました。 ありがとう! – CodeJoust

+0

+1この回答はactive_supportを必要としません – ksiomelo

0

これは

ひどく巧妙ない...作品:/

require 'date' 
Date.parse(Date.parse("2009-10-26").to_s[0,8] << "01") 
55

アプリケーションでactivesupportの含めて気にしない場合、あなたは、単にこれを行うことができます。

require 'active_support' 
date = Date.today.beginning_of_month 
+0

私は 'require 'を取得しました:そのようなファイルを読み込めません - activesupport(LoadError)'。 – JoaoHornburg

+1

'active_support'が必要です – avguchenko

+0

このbegin_of_monthトリックに感謝 – franchez

0
require 'active_support/core_ext' 
Date.today.beginning_of_month 
+0

これは、月ではなく、年の最初の日を返します。 –

1

あなたがactivesupportのなしの日付オブジェクトが必要な場合は、1

Date.today - Date.today.mday + 1 
+1

'Date.today - Date.today.mday + 1'に変更する必要があると思います – ishan

0

最も効率的に開始し、現在の月の終了日を取得するために、最後の最後の月の日和に戻ることができ

@date = DateTime.now 
@date.beginning_of_month 
@date.end_of_month 
関連する問題