如何在 PHP 中自动检测日光节省?
如何在 PHP 中自动检测日光节省?
这是作为对另一个答案的评论发布的。这是正确的答案,对其他人来说很有价值。当前标记为正确的答案仅在您想要了解服务器/PHP 时区中的夏令时 (DST) 时才有效。它不适用于任何时区(或者如果您的服务器/ PHP时区设置为UTC)。
date('I')
如果服务器/PHP 时区处于 DST 中,或者不是 DST,则将返回。"1"
"0"
若要了解特定时区是否采用 DST,请使用:
$date = new DateTime('now', new DateTimeZone('America/Los_Angeles'));
var_dump($date->format('I'));
替换为您感兴趣的任何时区。America/Los_Angeles
要概括这一点,并获取布尔值而不是字符串,请执行以下操作:
function getIsDaylightSaving($timezoneStr = 'America/Los_Angeles') {
$date = new DateTime('now', new DateTimeZone($timezoneStr));
return (bool) $date->format('I');
}
注意:您还可以使用此方法查明特定时区的任何日期/时间是否采用 DST 格式。只需替换为特定的日期/时间字符串即可。例如,要了解美国东部时区的 DST 中是否为 DST,请执行以下操作:DateTime('now')
11:14pm on December 20th, 2021
$date = new DateTime('2020-12-20 23:14', new DateTimeZone('America/New_York'));
var_dump((bool) $date->format('I')); // returns false
// or a date/time that was in DST
$date = new DateTime('2020-03-20 23:14', new DateTimeZone('America/New_York'));
var_dump((bool) $date->format('I')); // returns true