gpt4 book ai didi

PHP setTimeZone 时区转换问题 - 由于 BST (GMT+1) 而造成的特性

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:49 28 4
gpt4 key购买 nike

我的 mysql 数据库中存储了一个日期时间字段,其中包含以英国时间设置的事件的时间。在下面使用的示例中,这个时间是 09:00。

我正尝试在美国西海岸和东海岸时区显示这个时间。

我相信我正确地使用了 php DateTime 'setTimeZone' 函数 - 但是返回的结果对于两个时区来说都是一个小时

$online->getTimeByZone('America/Los_Angeles'); // Returns 02:00
$online->getTimeByZone('America/New_York'); // Returns 05:00


public function getTimeByZone($timezone = 'Europe/London') {

$date = $this->getDateField('start_time', 'Y-m-d H:i:s'); // 2017-10-30 09:00:00

$datetime = new DateTime($date, new DateTimeZone('Europe/London'));
$datetime->setTimeZone(new dateTimeZone($timezone));

return $datetime->format('H:i');

}

我假设从时差来看这将与英国观察夏令时有关 - 但我本以为我正在使用“欧洲/伦敦”启动 DateTime 对象,这将被考虑在内。

有什么想法吗?

最佳答案

您选择了北美仍在遵守“夏令时”但英国不遵守“夏令时”时出现在小窗口中的示例日期:英国时钟在 10 月的最后一个星期日改变,但美国和加拿大时钟在 11 月的第一个星期日。

在此重叠周内,美国/纽约时间为 UTC-4(“东部夏令时”),欧洲/伦敦时间为 UTC+0(“格林威治标准时间”)。因此,“2017-10-30 09:00:00 Europe/London”确实是“2017-10-30 05:00:00 America/New_York”。

如果您选择一周前的日期,偏移量将为 UTC-4 和 UTC+1(“英国夏令时”);一周后,它们将是 UTC-5(“东部标准时间”)和 UTC+0;因此在一年中的大部分时间里,您认为预期的差异是 5 小时是正确的。

3 月还有两周,北美会提前更改时钟,因此同样会有 4 小时的偏移,而不是 5 小时。

(当然这同样适用于美国/洛杉矶时区,在这三周内相隔 6 小时而不是 7 小时。)

关于PHP setTimeZone 时区转换问题 - 由于 BST (GMT+1) 而造成的特性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46814633/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com