Задать вопрос
@KoRNeT46RuS

Почему между 1 и 28 февраля функция считает 0 месяцев, а между 1 и 31 марта 1 месяц?

$datetime1 = new \DateTime(//начало месяца);
$datetime2 = new \DateTime(//конец месяца);
$interval = $datetime1->diff($datetime2);
$interval = $interval->format('%m');


между первым и последним числом феврая 0 месяцев, а между 1 и 31 марта 1 месяц. Почему?
  • Вопрос задан
  • 144 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@j-ker
Для всех основных версий результат одинаковый и корявый. Хм...
https://3v4l.org/KXYvi

И вот что написано в документации:
блабалбалааабалаблала много букв, ага, вот:
выставляем date_default_timezone_set(‘UTC’);
и всё начинает работать не так, как прежде, но так, как нужно:

https://3v4l.org/ha3O9

в крайнем примере первые два интервала внутри месяца -- на всех версиях нуль
а третий пример с 1 февраля по 1 марта = 1 на всех версияхъ

и связано это всё с разгуляем по часам между зонами (соотв. на крайних датах эти НЕУЧИТЫВАЕМЫЕ +-часы зональные и дают, насколько я понял, отколнение от нормы)

Спасибо за интересный вопрос.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Minifets
@Minifets
Hello world!!!
Какая версия php?

На 7.1 между 1 и 31 марта 0 месяцев, как и на 5.6
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы