Когда дается дата, как получить дату понедельника этой недели в php

Возможный дубликат:
Получить первый день недели в PHP?

Когда дана дата, я должен получить дату понедельника этой недели.

Когда 2012-08-08 предоставляется, он должен вернуться 2012-08-06.

 function last_monday($date) { if (!is_numeric($date)) $date = strtotime($date); if (date('w', $date) == 1) return $date; else return strtotime( 'last monday', $date ); } echo date('m/d/y', last_monday('8/14/2012')); // 8/13/2012 (tuesday gives us the previous monday) echo date('m/d/y', last_monday('8/13/2012')); // 8/13/2012 (monday throws back that day) echo date('m/d/y', last_monday('8/12/2012')); // 8/06/2012 (sunday goes to previous week) 

попробуйте: http://codepad.org/rDAI4Scr

… или вариант, который воскреснет на следующий день (в понедельник), а не на предыдущую неделю, просто добавьте строку:

  elseif (date('w', $date) == 0) return strtotime( 'next monday', $date ); 

попробуйте: http://codepad.org/S2NhrU2Z

Вы можете передать ему временную метку или строку, вы вернете отметку времени

Документация

Вы можете легко strtotime метку с функцией strtotime – она ​​принимает как фразу типа «последний понедельник», так и вторичный параметр, который является временной меткой, которую вы можете легко сделать с даты, когда вы используете mktime (обратите внимание, что входы для конкретная дата: Hour,Minute,Second,Month,Day,Year ).

 <?php $monday=strtotime("monday this week", mktime(0,0,0, 8, 8, 2012)); echo date("Ymd",$monday); // Output: 2012-08-06 ?> 

Изменить изменилось «в последний понедельник» в strtotime на «понедельник на этой неделе», и теперь он отлично работает.