2008-11-12 5 views
1

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

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

ответ

1

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

является «сегодня» днем ​​или днем ​​месяца? – lamcro 2008-11-12 22:47:05

4

В целом? См. Calendrical Calculations.

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