Вернуть тот же день недели по вертикали в календаре - Ruby on Rails - PullRequest
0 голосов
/ 04 марта 2019

Я хочу вернуть все даты по вертикали, как показано в календаре ниже.

enter image description here

Например, если бы я нажал наВо вторник я смогу вернуться

  • 03/03/2020
  • 02/06/2020
  • 01/09/2020
  • 03/ 11/2020
  • 01/12/2020

В настоящее время у меня есть все дни недели за целый год, но я не понял, как отфильтровать даты, которые я не делаю.Я не хочу основываться на показанном календаре.

date = Date.parse("09-01-2020").to_date
dates_selected = (date..date.end_of_year).group_by(&:wday)[date.wday]
# return all the dates on Wednesday

# filter the dates that are irrelevant

Любое понимание того, как я могу решить это?Спасибо.

Обновление 1

Я использовал этот формат, потому что хочу запланировать рабочий день или день отдыха в вертикальной строке.Мне удалось разобраться с помощью Javascript, чтобы извлечь даты.Мне просто интересно, могу ли я вернуть все даты, используя только ruby.

Обновление 2

Чтобы избежать путаницы, я использую календарь на 2020 год.Спасибо Амадану за указание.

enter image description here

1 Ответ

0 голосов
/ 04 марта 2019

Я полагаю, date.day + (date.wday - date.day + 1) % 7 появляется как номер столбца в вашем календаре.Таким образом, просто выберите те даты, которые имеют тот же столбец:

require 'date'

private def column_of(date)
  date.day + (date.wday - date.day + 1) % 7
end
def dates_from_same_column_as(date, range)
  column_of_date = column_of(date)
  range.select { |d| column_of(d) == column_of_date }
end

year = Date.parse('2020-01-01')..Date.parse('2020-12-31')
date = Date.parse('2020-03-03')
dates_from_same_column_as(date, year).map(&:to_s)
# => ["2020-03-03", "2020-06-02", "2020-09-01", "2020-11-03", "2020-12-01"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...