Question

Learning dates and they're giving me hard time right now.

$london = new DateTime();
$london->setTimestamp(0);
$london->setTimeZone(new DateTimeZone('Europe/London'));

echo $london ->format('d-m-Y H-i-s');

result:

01-01-1970 01-00-00

Shouldn't be London in UTC +0:00 therefore midnight? For example, New York returns 19:00 of the previous date which is correctly UTC -5:00. Moscow returns 01-01-1970 03-00-00 which is again incorrect (UTC +3:00 as opposed to UTC +4:00)

When not using ->setTimestamp, the London current time renders correctly, though.

Livecode: http://sandbox.onlinephpfunctions.com/

Also, my local timezone is Europe/Prague (UTC +1:00). Tested with date_default_timezone_set('Europe/London') as well.

I presume there's some error in my logic?

Was it helpful?

Solution

This is because apparently, Great Britain was on British Summer Time on January 1, 1970, one hour ahead of UTC (emphasis mine):

An inquiry during the winter of 1959–60, in which 180 national organisations were consulted, revealed a slight preference for a change to all-year GMT+1, but the length of summer time was extended as a trial rather than the domestic use of Greenwich Mean Time abolished.[6] A further inquiry during 1966–67 led the government of Harold Wilson to introduce the British Standard Time experiment, with Britain remaining on GMT+1 throughout the year. This took place between 27 October 1968 and 31 October 1971, when there was a reversion to the previous arrangement.

timeanddate.com's Time Zone Converter is a great tool for finding out stuff like this.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top