Учитывая день недели (1–7), как я могу вычислить, какова была последняя дата этого дня недели?
Пример: Сегодня среда, 2008/11/12, и я хочу знать, какая была последняя дата Пятница.





Если today - текущий день недели, вы можете использовать что-то вроде:
days_since_friday = (((today - 1) + 7) - (6 - 1)) % 7
Предполагается, что пятница представлена номером 6 дня недели (то есть 1 представляет воскресенье). Затем вычтите days_since_friday из текущей даты, и вы получите дату конца прошлой недели.
Вышеприведенное выражение немного сложнее, чем должно быть. Если ваш день недели начинается с 0 для воскресенья, это упрощается до:
days_since_friday = ((today + 7) - 5) % 7
или же
days_since_friday = (today + 2) % 7
«сегодня» - сегодняшний день недели.
В целом? См. Календарные расчеты.
В этом более узком случае в течение предыдущей недели? Найдите разницу в днях (пятница = 5, среда = 3). Найдите различия в неделях (последняя неделя = -7 дней). Когда вы найдете смещение в днях + неделях, примените это смещение к календарной дате.
сегодня день недели или день месяца?