学习日期,他们现在给我带来了很多困难。
$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
时,伦敦当前时间渲染正确。
动态代码:http://sandbox.onlinephpfunctions.com/
此外,我的当地时区为Europe/Prague
(UTC +1:00
)。同时使用date_default_timezone_set('Europe/London')
进行测试。
我认为我的逻辑中存在一些错误?
答案 0 :(得分:10)
这是因为显然,英国在1970年1月1日British Summer Time上,比UTC早一小时(强调我的):
1959年至1960年冬季进行了一次调查,其中咨询了180个国家组织,显示出对全年GMT + 1的改变略有偏好,但是夏令时的长度作为试验延长而不是国内使用格林威治标准时间废除。[6] 1966年至1967年期间的进一步调查导致哈罗德威尔逊政府引入了英国标准时间实验,全年保持格林尼治标准时间+ 1。这发生在1968年10月27日至1971年10月31日之间。 ,当有一个回归到以前的安排。
timeanddate.com的Time Zone Converter是查找此类内容的绝佳工具。