Попробуйте следующее:
return strtotime('last monday', strtotime('next sunday'));
echo date('Y-m-d', strtotime('previous monday'));
Только одно замечание. Убедитесь, что сегодня не понедельник, иначе вы получите дату предыдущего понедельника, как и указано. Вы можете сделать это следующим образом
if (date('w') == 1)
{
// today is monday
}
else
{
// find last monday
}
Попробуйте это.
echo date('Y-m-d', strtotime('last monday', strtotime('next monday')));
Он вернет текущую дату, если сегодня понедельник, и вернет последний понедельник в противном случае. По крайней мере, это работает на моем PHP 5.2.4 под локалью en_US.
Моя попытка:
<?php
$weekday = date("w") - 1;
if ($weekday < 0)
{
$weekday += 7;
}
echo "Monday this week : ", date("Y-m-d",time() - $weekday * 86400) , "\n";
?>
echo date('Y-m-d',time()+( 1 - date('w'))*24*3600);
На следующую неделю:
echo date('Y-m-d',time()+( 8 - date('w'))*24*3600);
1 на понедельник, 2 вторника,3 среда и так далее. Попробуйте.
$thisMonday = date('l, F d, Y', time() - ((date('w')-1) * 86400) );
Edit: explanation
date('w')
- это числовое представление дня недели (0=воскресенье, 6=суббота)Так, если сейчас среда (день 3), то понедельник был два дня назад:
time() - (86400 * (3 - 1))
= time() - 86400 * 2
Если сегодня понедельник (день 1), получаем:
time() - (86400 * (1 - 1))
= time() - 86400 * 0
= time()
Если сегодня воскресенье (день 0), понедельник будет завтра.
time() - (86400 * (0 - 1))
= time() - -86400
= time() + 86400