Мне нужно найти дату понедельника на текущей неделе. Как я могу это сделать в PHP 4?
Самый простой способ:
$time = strtotime('monday this week');
Попробуй это:
return strtotime('last monday', strtotime('next sunday'));
echo date('Ym-d',time()+( 1 - date('w'))*24*3600);
На следующей неделе:
echo date('Ym-d',time()+( 8 - date('w'))*24*3600);
1 в понедельник, 2 вторник, 3 среды и так далее. Попробуй.
echo date('Ym-d', strtotime('previous monday'));
Но только одно примечание. Вы хотите убедиться, что сегодня не понедельник, иначе вы получите дату предыдущего понедельника, точно так же, как говорится. Вы можете сделать это следующим образом
if (date('w') == 1) { // today is monday } else { // find last monday }
$thisMonday = date('l, F d, Y', time() - ((date('w')-1) * 86400) );
Изменить: объяснение
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
Попробуй это.
echo date('Ym-d', strtotime('last monday', strtotime('next monday')));
Он вернет текущую дату, если сегодня понедельник, и в противном случае вернется в последний понедельник. По крайней мере, это делается на моем PHP 5.2.4 под en_US locale.
Попробуй это
$day_of_week = date("N") - 1; $monday_time = strtotime("-$day_of_week days");
Моя попытка:
<?php $weekday = date("w") - 1; if ($weekday < 0) { $weekday += 7; } echo "Monday this week : ", date("Ymd",time() - $weekday * 86400) , "\n"; ?>