Получить дату понедельника на текущей неделе в PHP 4

Мне нужно найти дату понедельника на текущей неделе. Как я могу это сделать в PHP 4?

Ответ 1

Самый простой способ:

$time = strtotime('monday this week');

Ответ 2

Попробуйте следующее:

return strtotime('last monday', strtotime('next sunday'));

Ответ 3

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 среды и так далее. Попробуйте.

Ответ 4

echo date('Y-m-d', strtotime('previous monday'));

Только одно примечание. Вы хотите убедиться, что это не сегодня, иначе вы получите дату предыдущего понедельника, точно так же, как говорится. Вы можете сделать это следующим образом

if (date('w') == 1)
{
    // today is monday
}
else
{
    // find last monday
}

Ответ 5

$thisMonday = date('l, F d, Y', time() - ((date('w')-1) * 86400) );

Изменить: объяснение

  • date('w') - числовое представление дня недели (0 = воскресенье, 6 = суббота)
  • есть 86400 секунд в день
  • берем текущее время и вычитаем (один день * (день недели - 1))

Итак, если в настоящее время среда (день 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

Ответ 6

Попробуйте это.

echo date('Y-m-d', strtotime('last monday', strtotime('next monday')));

Он вернет текущую дату, если сегодня понедельник, и в противном случае вернется в последний понедельник. По крайней мере, это делается на моем PHP 5.2.4 под en_US locale.

Ответ 7

Попробуйте это

$day_of_week = date("N") - 1; 
$monday_time = strtotime("-$day_of_week days");

Ответ 8

Моя попытка:

<?php
$weekday = date("w") - 1;
if ($weekday < 0)
{
    $weekday += 7;
}
echo "Monday this week : ", date("Y-m-d",time() - $weekday * 86400) , "\n";
?>