PHP夏令时处理异常求助(AWS Ubuntu 22.04环境)
问题解决:PHP DateTime 夏令时不生效的问题
问题原因
你使用的PST是固定偏移的时区(UTC-8),它不会自动识别夏令时转换规则。太平洋夏令时(PDT,UTC-7)仅在每年3月至11月生效,而PST标识符无法触发这种自动切换。PHP的DateTimeZone只有在使用地区型时区标识符(如America/Los_Angeles)时,才会自动应用夏令时的切换逻辑。
解决方法
将时区参数从'PST'替换为'America/Los_Angeles',修改后的代码如下:
<?php $date = new DateTime("now", new DateTimeZone('America/Los_Angeles')); echo $date->format('Y-m-d H:i:s');
额外验证
如果需要确认当前时区的夏令时规则是否生效,可以运行以下代码查看最近的时区切换记录:
<?php $tz = new DateTimeZone('America/Los_Angeles'); $transitions = $tz->getTransitions(); // 输出最近2次时区切换信息(包含夏令时切换) print_r(array_slice($transitions, -2));
内容的提问来源于stack exchange,提问作者EastsideDev
相关产品推荐
相关产品推荐

