我在想如何用ruby(在rails3中)自动创建一个"Jan 21"样式等的上个月日期数组。如果今天是2月6日,那么数组将是["Jan 6", "Jan 7"... "Feb 6"]。
我不确定自己是否完全理解了问题,但是这里提供一个可能有帮助的答案。
(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"]
Date
对象而不是Time
对象,否则您将创建包含该时间段中每秒的数组。require 'active_support/all'
。 - slmrequire '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"]
%e
使用 -
,它将不会使用额外的空格填充单个数字的天数,并且可以消除 .squeeze
方法的需要。 因此应该是 "%b %-e"
。 - Grizzstart = "01/09/2021"
finish = "31/09/2021"
(start.to_date..finish.to_date).map(&:to_s)