Диапазон дат в массиве, рубин - PullRequest
23 голосов
/ 07 февраля 2011

Мне было интересно, как я могу автоматически создать в ruby ​​(в rails3) стиль арбарита последних месяцев в стиле «21 января» и т. Д.?

Если сегодня 6 февраля, тогдабудет ["6 января", "7 января" ... "6 февраля"]

Ответы [ 2 ]

73 голосов
/ 07 февраля 2011

Я не знаю, полностью ли я понял вопрос, но вот ответ, который может помочь

(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 объектов, в противном случае вы будете создавать массив каждой включенной секундыв этом упущении.

11 голосов
/ 07 февраля 2011
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"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...