UNIX时间戳(0):Europe/London返回UTC + 1

dwe*_*lle 5 php timezone timestamp unix-timestamp timezone-offset

学习日期,他们现在给我很多困难.

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

echo $london ->format('d-m-Y H-i-s');
Run Code Online (Sandbox Code Playgroud)

结果:

01-01-1970 01-00-00
Run Code Online (Sandbox Code Playgroud)

UTC +0:00午夜不应该是伦敦吗?例如,纽约正确地返回上一个日期的19:00 UTC -5:00.莫斯科回归01-01-1970 03-00-00再次不正确(UTC +3:00相对于UTC +4:00)

不使用时->setTimestamp,伦敦当前时间渲染正确.

动态代码:http://sandbox.onlinephpfunctions.com/

另外,我当地的时区是Europe/Prague(UTC +1:00).同样经过测试date_default_timezone_set('Europe/London').

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

Pek*_*ica 12

这是因为显然,英国在1970年1月1日的英国夏令时,比UTC早一小时(强调我的):

在1959年至1960年冬季进行了一次调查,其中咨询了180个国家组织,显示出略微倾向于改变全年GMT + 1,但夏季时间长度作为试验延长而不是国内使用格林威治标准时间废除.[6] 1966年至1967年期间的进一步调查导致哈罗德威尔逊政府引入英国标准时间实验,英国全年保持GMT + 1.这发生在1968年10月27日至1971年10月31日之间,当时有一种情况回归到先前的安排.

timeanddate.com的时区转换器是一个很好的工具,可以找到这样的东西.

  • @DavidL:MSK(莫斯科标准时间)是UTC + 3直到2011年(以及UTC + 4夏令时(MSD)).现在MSK全年都是UTC + 4. (2认同)