【发布时间】:2018-03-14 13:19:20
【问题描述】:
是否可以在 Php 中设置 DateTime 对象的夏令时?
我在 DST 更改的确切时刻遇到了日期时间问题。
在欧洲/巴黎时区,日期2016-10-30 02:00:00 存在两次(因为这是 DST 更改的确切时刻(凌晨 3 点又是凌晨 2 点)
让我们考虑一下这段代码:
$dateString = '2016-10-30 01:30:00';
$dateBefore = \DateTime::createFromFormat('Y-m-d H:i:s', $dateString, new DateTime('Europe/Paris'));
$dateBefore->setTimeZone(new \DateTimeZone('UTC'));
$dateString = '2016-10-30 02:30:00';
$dateAfter = \DateTime::createFromFormat('Y-m-d H:i:s', $dateString, new DateTime('Europe/Paris'));
$dateAfter->setTimeZone(new \DateTimeZone('UTC'));
$dateBefore 是'2016-10-29 23:30:00'
$dateAfter是 '2016-10-30 01:30:00'
那么如何在此处生成日期“2016-10-30 00:30:00”?
有可能做这样的事情吗?
$winterTZ = new DateTime('Europe/Paris');
$winterTZ->setDST(false);
$winterDate = \DateTime::createFromFormat('Y-m-d H:i:s', $dateString, $winterTZ);
$summerTZ = new DateTime('Europe/Paris');
$summerTZ->setDST(true);
$winterDate = \DateTime::createFromFormat('Y-m-d H:i:s', $dateString, $summerTZ);
谢谢!
【问题讨论】: