日付があり、たとえば最も近い木曜日を見つけたいと思っています。木曜日だけでなく、平日でも機能するようにしたいのですが。
混乱を避けるために、次の木曜日ではなく、前の木曜日か次の木曜日のどちらか近い方が必要です。したがって、双方向でなければなりません。
私はそれを行うコードを書きましたが、while ループには明らかに満足できず、より良い実装のアイデアがあるかどうか疑問に思っていました。
def closest_date(date, wday)
# already ok
return date if date.wday == wday
before_date = date
after_date = date
until before_date.wday == wday && after_date.wday == wday
before_date -= 1.day unless before_date.wday == wday
after_date += 1.day unless after_date.wday == wday
end
if (date - before_date).to_i > (after_date - date).to_i
return after_date
else
return before_date
end
end