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

如何在PHP中将MySQL的24小时制时间转为12小时制AM/PM格式?

解决方案:将MySQL存储的24小时制时间转为12小时制AM/PM格式

你之前的问题出在混淆了MySQL函数和PHP语法——DATE_FORMAT是MySQL的查询函数,不能直接在PHP代码中调用。下面提供两种可行的解决方法:

方法一:在MySQL查询阶段直接转换

如果希望从数据库取数据时就得到目标格式,可以修改SQL查询语句,先把字符串类型的时间转为MySQL可识别的时间格式,再用DATE_FORMAT转换为12小时制:

SELECT DATE_FORMAT(STR_TO_DATE(start_time, '%H:%i'), '%l:%i %p') AS start_time FROM your_table_name;
  • STR_TO_DATE(start_time, '%H:%i'):将varchar类型的13:30转换为MySQL可处理的时间格式
  • %l:%i %p:格式化为不带前导零的12小时制小时+分钟+AM/PM标记,输出结果如1:30 PM

之后PHP代码直接赋值即可:

$timetable->start_time = $db_timetable['start_time'];

方法二:在PHP中处理转换

如果不想修改SQL查询,也可以用PHP自带的日期处理函数完成转换:

方式1:使用DateTime类(推荐,兼容性更强)

// 从24小时制字符串创建DateTime对象
$timeObj = DateTime::createFromFormat('H:i', $db_timetable['start_time']);
// 格式化为目标格式
$timetable->start_time = $timeObj->format('g:i A');

方式2:使用strtotime + date函数

// 将时间字符串转为时间戳,再格式化输出
$timetable->start_time = date('g:i A', strtotime($db_timetable['start_time']));
  • 格式符说明:g代表不带前导零的12小时制小时,i代表分钟,A代表大写的AM/PM标记

内容的提问来源于stack exchange,提问作者Always an Artist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 07:55:37