如何在PHP中使用-11:00时区偏移将UTC时间转换为对应时区时间
PHP 基于UTC偏移转换时区的正确实现
你原代码的问题是直接在初始化DateTime时传入偏移时区,默认会生成该时区的当前时间,若需要将UTC时间转换为对应偏移的时区时间,需要先基于UTC时区实例化时间对象,再切换到目标偏移时区即可。
正确代码示例
场景1:转换当前UTC时间到-11:00偏移时区
$utc_offset = '-11:00'; // 先实例化UTC时区的当前时间 $dt = new DateTime('now', new DateTimeZone('UTC')); // 切换到目标偏移时区 $dt->setTimezone(new DateTimeZone($utc_offset)); // 输出结果 echo $date_echo = $dt->format('n/j/Y'); echo $time_echo = $dt->format('h:i A');
场景2:转换指定UTC时间字符串到-11:00偏移时区
$utc_offset = '-11:00'; // 替换为你要转换的UTC时间字符串 $utc_time_str = '2024-05-20 12:00:00'; $dt = new DateTime($utc_time_str, new DateTimeZone('UTC')); $dt->setTimezone(new DateTimeZone($utc_offset)); echo $date_echo = $dt->format('n/j/Y'); echo $time_echo = $dt->format('h:i A');
注意事项
- PHP的
DateTimeZone支持直接传入+HH:mm/-HH:mm格式的偏移值,无需额外转换 - 必须先明确指定时间所属的UTC时区,再切换时区,否则会默认使用PHP配置的默认时区生成时间,导致结果偏差
内容的提问来源于stack exchange,提问作者Gaurang Sondagar
相关产品推荐
相关产品推荐

