Ответ 1
Здесь вы видите два эффекта. Первый заключается в том, что вы используете способ записи для даты, которая может быть записана в нескольких формах:
0000-01-01 same as 0000-01-01
0000-01-00 same as -0001-12-31
0000-00-01 same as -0001-12-01
0000-00-00 same as -0001-11-30
Итак, по самой дате вы уже указываете 30-е ноября -1.
Теперь есть смещение по времени, которое отличается от 9 минут и 21 секунды. Это связано с изменением часов по сравнению с UTC в Париже/Франции, которое произошло 10 марта 1911 года 23: 51: 38/39 локального времени.
Я немного изменил ваш пример кода и представил настройки Европы/Парижа, как у вас есть, что играет определенную роль. Этот код также сообщает смещение в секундах от UTC (Z
), которое вы ищете:
$dt = new DateTime('0000-00-00 00:00:00', new DateTimeZone('Europe/Paris'));
printf("%s secs offset from UTC\n", $dt->format('r T (e) Z'));
Я немного изменил даты
Fri, 10 Mar 1911 23:51:38 +0009 PMT (Europe/Paris) 561 secs offset from UTC
^^^
Через секунду:
Fri, 10 Mar 1911 23:51:39 +0000 WET (Europe/Paris) 0 secs offset from UTC
Когда местное стандартное время собиралось достичь Суббота, 11 марта 1911 года, 00:01:00 часы были повернуты назад 0:09:21 часов до Пятница, 10 марта 1911 года, 23:51:39 вместо этого местное стандартное время.
Это 561 сек. Ссылка: Изменения часов в Париже - даты смены времени в 1911 году и Изменение часовых поясов и даты начала и окончания летнего времени между 1900 и 1924 годами.