В моем приложении Rails мне нужно получить даты следующего вхождения определенного дня недели, начиная с какой-либо другой даты. Поэтому в основном мне нужны функции date.next_monday
, date.next_wednesday
. Я не думаю, что они существуют в стандартных библиотеках Руби, поэтому я решил обезьяны патч класс Date как так:Monkey-patch Дата класса для next_ <weekday> методов
class Date
weekdays = [:sunday, :monday, :tuesday, :wednesday, :thursday, :friday, :saturday]
weekdays.each do |weekday|
method_name = "next_" + weekday.to_s
send :define_method, method_name do
tmp_date = self + 1
until tmp_date.send((weekday.to_s + "?").to_sym)
tmp_date = tmp_date + 1
end
tmp_date
end
end
end
Это, кажется, работает хорошо. Мои вопросы:
- Неужели мне не нужно было все это делать? (Есть ли какой-нибудь способ, чтобы получить next_, что я не думал?
- Если то, что я нужен, есть лучший способ, чтобы получить массив дней недели?
Спасибо!
Рассмотрима коммерческого метода:. http://stackoverflow.com/questions/4514988/rails-is-there-away-to-get-the -date-object-that-the-closeest-monday-to-today – gayavat
Это выглядит полезным. Другой ответ t o этот вопрос также имел полезные ссылки, например, щекочущий камень. Но этот ответ ушел, прежде чем я смог его проголосовать: \ – Adnan