You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将PHP中的工作时间数组转换为24小时制?

解决PHP中12小时制时间转24小时制的问题

针对你给出的数组,我们可以利用PHP的DateTime类快速完成12小时制到24小时制的转换,同时保留"Closed"状态。具体实现如下:

示例代码

// 原数组
$hours = [
    "Monday" => "8AM-4PM",
    "Tuesday" => "8AM-4PM",
    "Wednesday" => "8AM-4PM",
    "Thursday" => "8AM-4PM",
    "Friday" => "Closed",
    "Saturday" => "8AM-4PM",
    "Sunday" => "8AM-4PM"
];

// 遍历数组处理时间
foreach ($hours as $day => $time) {
    // 跳过Closed的情况
    if ($time === 'Closed') {
        continue;
    }
    
    // 拆分开始和结束时间
    list($startTime, $endTime) = explode('-', $time);
    
    // 转换开始时间为24小时制
    $start24 = DateTime::createFromFormat('hA', $startTime)->format('H:i');
    // 转换结束时间为24小时制
    $end24 = DateTime::createFromFormat('hA', $endTime)->format('H:i');
    
    // 更新数组值
    $hours[$day] = "{$start24}-{$end24}";
}

// 输出结果
print_r($hours);

代码说明

  • DateTime::createFromFormat('hA', $time):按指定格式解析12小时制时间(h代表12小时制小时数,A代表大写的AM/PM标识)。
  • format('H:i'):将解析后的时间格式化为24小时制(H代表24小时制小时数,i代表分钟,原时间无分钟时会自动补:00)。
  • 直接跳过"Closed"条目,保留原状态。

执行代码后,输出结果为:

Array
(
    [Monday] => 08:00-16:00
    [Tuesday] => 08:00-16:00
    [Wednesday] => 08:00-16:00
    [Thursday] => 08:00-16:00
    [Friday] => Closed
    [Saturday] => 08:00-16:00
    [Sunday] => 08:00-16:00
)

特殊情况适配

对于12AM、12PM这类特殊时间,DateTime类也能正确处理:

  • 12AM会转换为00:00
  • 12PM会转换为12:00

内容的提问来源于stack exchange,提问作者Andra Yogi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 14:00:47