2011-02-07 28 views
22

ruby​​(in rails3)で自動的に "Jan 21"スタイルの最後の月のアラルを作成する方法を知りたいですか?配列内の日付範囲、ruby

今日は2月6日である場合には、arraryは、[「1月6日」、「1月7日を」...「2月6日の」]だろう

+0

私は質問を理解していません。答えは現在の日付に依存しますか?他の入力?出力はどのように見えますか?おそらく、あなたはいくつかのサンプルの入力と出力を提供し、あなたの問題について何も知らない人がその質問を理解するかどうかを考えるべきでしょう。 – DigitalRoss

+0

曖昧さが残念です!質問を更新しました: – Elliot

答えて

70

私は完全に質問を理解している場合、私は知りませんが、ここでは、日付の範囲を作成し、strftime

0を使用して、所望の形式に変換することができます

(1.month.ago.to_date..Date.today).map{ |date| date.strftime("%b %d") } 

出力

["Jan 07", "Jan 08", "Jan 09", "Jan 10", "Jan 11", "Jan 12", "Jan 13", "Jan 14", "Jan 15", "Jan 16", "Jan 17", "Jan 18", "Jan 19", "Jan 20", "Jan 21", "Jan 22", "Jan 23", "Jan 24", "Jan 25", "Jan 26", "Jan 27", "Jan 28", "Jan 29", "Jan 30", "Jan 31", "Feb 01", "Feb 02", "Feb 03", "Feb 04", "Feb 05", "Feb 06"] 

を助けるかもしれない答えです

Timeオブジェクトの代わりにDate個のオブジェクトを使用してください。そうでないと、その経過時間に含まれる1秒ごとの配列が作成されます。

+3

**注意:ちょうどあなたが時間範囲での操作に注意する必要があることを強調するため、上記のように日付形式に変換してください。ありがとうございます** – edavey

+2

あなたがrails3にいない場合、あなたはactivesupport、require 'active_support/all''を必ず含める必要があります。 – slm

+1

「1」はどこから来たのですか?月はどこですか。から来る?活動支援の人ですか? '1.month.ago'はRailsのことですか? – JDS

9
require 'date' 
now = Date.today 
p (now<<1 .. now).map{ |day| day.strftime("%b %e").squeeze(' ') } 
# No railsy .month.ago.to_date silliness! 
# the squeeze gets rid of the occasional extra space 

出力:

["Jan 7", "Jan 8", "Jan 9", "Jan 10", (...), "Feb 7"] 
+0

<< DateTimeに関して何をするのですか? 「月に戻る」のように見えますが、その構文は非常に不透明で、DateTimeクラスのドキュメントは見つかりません – JDS

+0

DateTimeはDateから継承しています(DateはDateに親としてリストされています)。 [<<メソッド](http://www.ruby-doc.org/stdlib-1.9.3/libdoc/date/rdoc/Date.html#method-i-3C-3C)がそこに文書化されています。それは確かに1ヶ月前に戻ります。 – steenslag

+0

ありがとうございます。私は "<<" – JDS