您在这里看到两种效果。第一个是您使用一种可以写成多种形式的日期的书写方式:
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
因此,按日期本身,您已经指定了 11 月 30 日 -1。
现在剩下的时间偏移量大约是 9 分 21 秒。这是因为与当地时间 1911 年 3 月 10 日 23:51:38/39 巴黎/法国的 UTC 相比,时钟发生了变化。
我对您的代码示例进行了一些修改,并在您拥有它时引入了Europe/Paris设置,它正在发挥作用。此代码还告诉您与 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
当当地标准时间即将到达 1911 年 3 月 11 日星期六 00:01:00 时,时钟被调回 0:09:21 小时至 1911 年 3 月 10 日星期五 23:51:39 当地标准时间。
那是561秒。参考:巴黎的时钟变化 - 1911 年的时间变化日期和1900 年至 1924 年之间的时区变化和夏令时开始/结束日期。