PHP实现给日期时间加1小时并格式化输出的方法(WordPress插件场景)
解决方案
你可以直接使用PHP内置的DateTime类处理时间转换,步骤简单且兼容各种合法时间格式,不需要额外依赖。
具体修改方法
找到你代码中foreach ($json['planned_battles'] as $p_battle) {这段循环,在输出战斗时间之前增加时间处理逻辑,修改后的循环代码如下:
foreach ($json['planned_battles'] as $p_battle) { // 处理战斗时间:解析原始时间 + 1小时 + 格式化输出 $raw_time = $p_battle['battle_time']; $battle_date = DateTime::createFromFormat('Y-m-d H:i:s.u', $raw_time); $formatted_time = ''; if ($battle_date) { $battle_date->modify('+1 hour'); $formatted_time = $battle_date->format('Y-m-d H:i'); } else { // 时间解析失败时 fallback 显示原始时间,避免页面报错 $formatted_time = $raw_time; } $html .= '<tr>'; $html .= '<td>' . $formatted_time .'</td>'; $html .= '<td>' . $p_battle['province_type'] .'</td>'; $html .= '<td>' . $p_battle['province_id'] .'</td>'; $html .= '<td>' . $p_battle['arena_name'] .'</td>'; $html .= '</tr>'; }
补充说明
- 如果你的站点时区和接口返回的时间时区存在偏差,可以在解析时间后手动设置时区,比如
$battle_date->setTimezone(new DateTimeZone('Asia/Shanghai'));即可调整为中国时区。 - 上述代码已经做了异常兼容,哪怕后续接口返回的时间格式出现异常,也不会导致页面出现致命错误,只会显示原始时间。
内容的提问来源于stack exchange,提问作者pakos
相关产品推荐
相关产品推荐

