PHP如何将存储24小时制时间的变量转换为12小时制格式
24小时制时间转12小时制实现方案
你之前的代码存在语法错误、函数调用逻辑错误问题:
- 不存在全局的
format()函数,该方法仅属于DateTime实例对象 - 函数括号未闭合,语法无法通过解析
strptime()返回的是结构化时间数组,无法直接传入格式化函数输出字符串
方案1:兼容性最高的date+strtotime实现(支持所有PHP版本)
直接将读取到的24小时制时间字符串转为时间戳,再按12小时制规则格式化即可:
$time = $row['pu_eta']; // 原始值为类似13:00的24小时制时间 $twelve_hour_time = date('h:i A', strtotime($time)); // 输出示例:01:00 PM
如果需要小写的上下午标识,把格式化串里的A替换为a即可,输出结果为01:00 pm。
方案2:DateTime类实现(PHP >= 5.3.0 可用)
直接按指定格式解析时间字符串,再格式化输出,不受服务器默认时间格式配置干扰:
$time = $row['pu_eta']; $date_obj = DateTime::createFromFormat('H:i', $time); $twelve_hour_time = $date_obj->format('h:i A');
格式化字符说明
h:12小时制小时数,带前导零,取值范围01-12i:分钟数,带前导零,取值范围00-59A:大写上下午标识,取值AM/PMa:小写上下午标识,取值am/pm
注意:如果运行环境时区配置错误,输出结果可能出现偏差,可在代码开头加
date_default_timezone_set('对应时区标识')修正,例如国内时区用PRC即可。
内容的提问来源于stack exchange,提问作者user3587491
相关产品推荐
相关产品推荐

