Here is a test code:
<?php
ini_set('date.timezone', 'Europe/London');
$dt = new DateTime('0000-00-00 00:00:00');
var_dump($dt);
This provides:
object(DateTime)[1]
public 'date' => string '-0001-11-30 00:00:00' (length=20)
public 'timezone_type' => int 3
public 'timezone' => string 'Europe/London' (length=13)
Whereas this is not a valid date. I don't understand the returned value, especially the month... can you explain?
You are seeing two effects here. The first one is that you use a way of writing for a date that can be written in multiple forms:
So by the date itself, you already specify the 30th November -1.
Now there's the time offset left that differs about the 9 minutes and 21 seconds. That is because of a change in the clock compared to UTC in Paris/France that happened 10 Mar 1911 23:51:38/39 local time.
I modified your code example a bit and introduced the Europe/Paris setting as you have it, which is playing a role. This code is telling as well the offset in seconds from UTC (
Z
) which is what you're looking for:I changed the dates a bit
One second later:
That are 561 Secs. Reference: Clock changes in Paris - Time change dates in 1911 and Time zone changes and daylight saving time start/end dates between year 1900 and 1924.