Какую версию PHP вы используете? В некоторых версиях PHP strtotime
имеет некорректное поведение.
Я нашел это на strtotime
странице справочника:
5.0.2 В PHP 5 до 5.0.2 "сейчас" и другие относительные времена неправильно вычисляются с сегодняшней полуночи. Это отличается от других версий, где он правильно рассчитан из текущего времени.
5.0.0 Допускаются микросекунды, но они игнорируются.
4.4.0 В версиях PHP до 4.4.0 значение «next» неправильно вычисляется как +2. Типичное решение этой проблемы - использовать «+1».
Ваше описанное поведение предполагает, что у вас есть версия между 5.0 и 5.0.2 .
Я предлагаю вам проверить, превышает ли разница между сегодняшним днем и вычисленным " в следующий понедельник " больше 7 дней. Если это так, вычтите 7 дней, и у вас будет фактическая дата.
Попробуйте использовать этот код:
$days = ((strtotime('next monday') - time()) / 60 / 60 / 24);
if ($days >= 8) {
$days -= 7;
}
Я знаю, что есть функция date_diff , но если ваша версия PHP настолько мала, как мне кажется, она недоступна для вас (извините, только 5.3.0 и выше).