Почему нулевая дата выводится некорректно?

Почему нулевая дата становится отрицательной при дампе и как это можно исправить?
$date = new DateTimeImmutable('0000-00-00 00:00:00');
dump($date);
/*
 * Вывод дампа:
 * DateTimeImmutable {
 * +"date": "-0001-11-30 00:00:00.000000"
 * +"timezone_type": 3
 * +"timezone": "Europe/Moscow"
 * }
 */
dump($date->format('Y-m-d'));
// Вывод дампа: "-0001-11-30"
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Потому что нулевой месяц - это на один месяц раньше первого месяца, и нулевой день тоже на один день раньше первого дня. Вот и получается:
0000-01-01 00:00:00 минус 1 месяц = -0001-12-01 00:00:00
-0001-12-01 00:00:00 минус 1 день = -0001-11-30 00:00:00
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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