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

2019-07-20 00:31发布

学习的日期,他们让我很难现在。

$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 。 莫斯科返回01-01-1970 03-00-00这是不正确再次( UTC +3:00 ,而不是UTC +4:00

当不使用->setTimestamp ,伦敦当前的时间正确渲染,虽然。

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

另外,我的本地时区为Europe/PragueUTC +1:00 )。 测试了date_default_timezone_set('Europe/London')为好。

我相信有一些错误在我的逻辑是什么?

Answer 1:

这是因为很明显,英国是在英国夏令时间于1970年1月1日,领先UTC(重点煤矿)一小时:

1959-60赛季的冬季调查,其中180个国家组织进行了磋商,揭示了一个改变全年GMT + 1略有偏好,但夏天的时间长度延长为审判,而不是国内使用的格林威治时间取消。[6] 在1966-67进一步的调查导致哈罗德·威尔逊政府引进英国标准时间的实验, 与英国在GMT + 1其余贯穿全年。 这个1968年10月27日和31日之间发生了1971年10月,当时有一个回复到先前的安排。

timeanddate.com的时区转换是找出这样的东西一大利器。



文章来源: UNIX timestamp(0): Europe/London returns UTC+1