将日期时间转换为 GMT 时间戳


Convert datetime to GMT timestamp

我需要找到一种方法将用户指定的日期和时间转换为GMT时间戳。

按照 Mahdi 在这里的回答,我使用以下代码来制作转换的原型

$date = new DateTime("09 Jul 2016 18:00:00");
echo gmdate('Y-m-d H:i:s', $date->getTimestamp());

哪个返回

2016-07-09 16:00:00

回应应该是

2016-07-09 17:00:00

因为通过使用其他来源,我发现格林尼治标准时间比我居住的当地时间(英国)晚 1 小时。

知道为什么会发生这种奇怪的行为吗?

您永远不会将时区设置为 UTC。此外,没有必要将DateTime功能与其他PHP日期函数混合使用,因为DateTime内置了您需要的所有工具。

$date = new DateTime("09 Jul 2016 18:00:00", new DateTimeZone('Europe/London'));
$date->setTimezone(new DateTimeZone('UTC'));
echo $date->format('Y-m-d H:i:s');

演示