Возможный дубликат:
Получить первый день недели в 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
на «понедельник на этой неделе», и теперь он отлично работает.