如何将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:0012PM会转换为12:00
内容的提问来源于stack exchange,提问作者Andra Yogi
相关产品推荐
相关产品推荐

