我需要找到一种方法将用户指定的日期和时间转换为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');
演示