PHP 将 12 小时制时间转换为 24 小时制的方法

沈知远
沈知远
发布时间:2026-10-14 | 2人浏览过
原创

本文介绍了在 PHP 中将 AM/PM 格式的 12 小时制时间(如 '02:30:00 pm')转换为 24 小时标准格式(如 '14:30:00')的实现方法,包含核心代码与参数说明。

结果或目标

本方案的目标是将包含时、分、秒及上下午标识(AM/PM)的独立参数,统一转换为标准的 H:i:s 格式 24 小时制时间字符串。例如:输入 1 时、2 分、3 秒、pm,输出应为 13:02:03。

准备条件

  1. 已配置好的 PHP 运行环境。
  2. 需要处理的时分秒数值以及上下午标识字符串。

操作顺序

第 1 步:构建转换函数

目的: 封装一个可复用的逻辑,处理数据格式化与时区解析。
入口: 新建或编辑 PHP 文件。

定义函数 to_24_hour,接收四个参数:$hours(时)、$minutes(分)、$seconds(秒)、$meridiem(AM 或 PM)。函数内部执行以下动作:

  1. 数据清洗:使用 (int) 强制类型转换确保数值正确,再通过 sprintf('%02d', ...) 补零,保证输出符合时间显示规范(例如分钟不足两位时补 0)。
  2. 标识标准化:使用 strtolower() 将上午/下午标识统一转为小写,避免大小写敏感导致解析失败。
  3. 时间戳转换:拼接字符串后,利用 strtotime() 将其解析为 Unix 时间戳。
  4. 格式化输出:最后使用 date('H:i:s', ...) 将时间戳重新格式化为 24 小时制字符串。
<?php
function to_24_hour($hours,$minutes,$seconds,$meridiem){
 $hours = sprintf('%02d',(int) $hours);
 $minutes = sprintf('%02d',(int) $minutes);
 $seconds = sprintf('%02d',(int) $seconds);
 $meridiem = (strtolower($meridiem)=='am') ? 'am' : 'pm';
 return date('H:i:s', strtotime("{$hours}:{$minutes}:{$seconds}{$meridiem}"));
}
echo to_24_hour( 1, 2, 3, 'pm' ); // Returns 13:02:03
echo to_24_hour( '02', '30', '00', 'pm' ); // Returns 14:30:00
?>

第 2 步:调用并验证结果

目的: 测试函数的准确性与健壮性。
操作: 在脚本末尾添加调用语句。

可以通过控制台或浏览器查看输出值。若输入为 to_24_hour('02', '30', '00', 'pm'),预期输出结果为 14:30:00,证明转换逻辑生效。

完成判断

当调用该函数能稳定返回符合 HH:MM:SS 规范的 24 小时制字符串,且正确处理了进位与补零(如凌晨 1 点与下午 1 点的区分)时,即表示转换功能部署完成。

原文有依据的排错

  • 大小写问题:如果传入的 $meridiem 是 'PM' 或 'Pm',必须经过 strtolower() 转换,否则部分服务器配置下可能导致 strtotime 解析异常或默认视为无效时间。
  • 数据类型:如果传入的是字符串类型的数字(如 '5'),建议先转为整型再参与运算,防止 sprintf 出现意外警告或格式化错误。

简要总结

通过组合字符串格式化、类型转换与内置时间函数,可以高效地在 PHP 中解决 12 小时向 24 小时的转换问题。以上就是 PHP 将 12 小时制转换成 24 小时制的详细内容,更多关于 PHP 日期处理技巧的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表