web-dev-qa-db-ja.com

配列の日付範囲、ruby

Ruby(Rails3の場合))で、先月の "1月21日"スタイルなどを自動的に作成するにはどうすればよいのでしょうか。

今日が2月6日である場合、到着予定は["Jan 6"、 "Jan 7" ... "Feb 6"]になります。

24
Elliot

質問を完全に理解したかどうかはわかりませんが、これが役立つかもしれない答えです

(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"] 

日付の範囲を作成し、 strftime を使用してそれらを目的の形式に変換できます。

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

74
Chubas
require 'date'
now = Date.today
p (now<<1 .. now).map{ |day| day.strftime("%b %-e") }
# No railsy .month.ago.to_date silliness!
# the dash in `%-e` gets rid of the occasional extra space. Credit @Grizz in the comments.

出力:

["Jan 7", "Jan 8", "Jan 9", "Jan 10", (...), "Feb 7"]
11
steenslag