Расчет даты на день недели - PullRequest
1 голос
/ 12 ноября 2008

Учитывая день недели (1-7), как я могу рассчитать, какой была последняя дата этого дня недели?

Пример: Сегодня Среда , 2008/11/12, и я хочу знать, какой была последняя пятница дата.

Ответы [ 2 ]

4 голосов
/ 12 ноября 2008

В общем? См. Календарные расчеты .

В этом более узком случае в течение предыдущей недели? Найдите разницу в днях (пятница = 5, среда = 3). Найти различия в неделях (на прошлой неделе = -7 дней). Когда вы найдете смещение в днях + неделях, примените это смещение к календарной дате.

1 голос
/ 12 ноября 2008

Если 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
...