UNIX时间戳(0):欧洲/伦敦返回UTC + 1

问题描述:

学习日期,他们给我现在很难。UNIX时间戳(0):欧洲/伦敦返回UTC + 1

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

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

结果:

01-01-1970 01-00-00 

不应该是在伦敦,因此UTC +0:00午夜?例如,纽约返回前一日期的19:00,正确的是UTC -5:00。莫斯科不使用->setTimestamp返回01-01-1970 03-00-00这又是不正确的(UTC +3:00而不是UTC +4:00

,伦敦当前的时间正确渲染,虽然。

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

而且,我的本地时区为Europe/PragueUTC +1:00)。测试date_default_timezone_set('Europe/London')以及。

我认为在我的逻辑中有一些错误?

这是因为很明显,英国是在British Summer Time于1970年1月1日,UTC提前一小时(重点煤矿):

的1959至1960年冬季的调查,其中180国家组织进行了咨询,发现略有偏好改变为全年GMT + 1,但夏季时间的长度延长了审判,而不是在国内使用格林威治标准时间[6]。在1966-67年期间的进一步调查导致哈罗德威尔逊政府推出英国标准时间实验,英国在格林尼治标准时间+1时全年保持不变。这发生在1968年10月27日至1971年10月31日之间,当时回到原来的安排。

timeanddate.com的Time Zone Converter是一个很好的工具,用于查找这样的东西。

+0

PHP的等价物http://stackoverflow.com/a/6841479/427992? ;) – hohner 2013-02-16 14:05:51

+0

@hohner大声笑!想想看,虽然,如果这里有重复的地方,我不会感到惊讶...... – 2013-02-16 14:06:33

+0

哇,我从来不知道。让我想到我不存在的一堆历史书籍的尘埃。我猜俄罗斯做了类似的事情吗? – Dwelle 2013-02-16 14:13:00