Ell*_*iot 24 ruby ruby-on-rails ruby-on-rails-3
我想知道如何在红宝石(在rails3中)自动创建上个月"Jan 21"风格等的历史记录?
如果今天是2月6日,那么该作品将有["1月6日","1月7日"......"2月6日"]
Chu*_*bas 74
我不知道我是否完全理解了这个问题,但这里的答案可能有所帮助
(1.month.ago.to_date..Date.today).map{ |date| date.strftime("%b %d") }
Run Code Online (Sandbox Code Playgroud)
输出
["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"]
Run Code Online (Sandbox Code Playgroud)
您可以创建一系列日期,然后使用strftime将它们转换为所需的格式
只需确保使用Date范围内的Time对象而不是对象,否则您将创建一个包含在该时间间隔内的每秒数组.
ste*_*lag 11
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.
Run Code Online (Sandbox Code Playgroud)
输出:
["Jan 7", "Jan 8", "Jan 9", "Jan 10", (...), "Feb 7"]
Run Code Online (Sandbox Code Playgroud)