如何将数据库存储的秒数*1000数据转换为HH:MM:SS格式显示
实现方案
方案1:适用时长≤24小时的场景(代码最简)
直接使用PHP内置的gmdate()函数处理即可,该函数会自动把秒数格式化为GMT时区的时分秒格式,避免时区偏移问题:
// 先把毫秒转为整数秒 $totalSeconds = (int)floor($result->time / 1000); // 格式化为HH:MM:SS $formattedTime = gmdate('H:i:s', $totalSeconds); // 输出到页面 echo '<p style="text-align: center; padding-bottom: 0px; margin-bottom: 1px;">'.$formattedTime.' <b>Time</b></p>';
方案2:支持超过24小时的长时长度量
如果你的业务场景中存在时长超过1天的情况,gmdate()的小时位会自动归零,此时用手动计算的方式更稳妥:
$totalSeconds = (int)floor($result->time / 1000); // 分别计算时、分、秒,不足两位自动补0 $hours = str_pad(floor($totalSeconds / 3600), 2, '0', STR_PAD_LEFT); $minutes = str_pad(floor(($totalSeconds % 3600) / 60), 2, '0', STR_PAD_LEFT); $seconds = str_pad($totalSeconds % 60, 2, '0', STR_PAD_LEFT); $formattedTime = "{$hours}:{$minutes}:{$seconds}"; // 输出到页面 echo '<p style="text-align: center; padding-bottom: 0px; margin-bottom: 1px;">'.$formattedTime.' <b>Time</b></p>';
补充说明
- 用
floor()处理是为了避免毫秒转秒时产生的小数,导致格式转换报错 str_pad()的作用是保证时分秒都保持两位,不足的位置补0,符合常规时间展示习惯- 如果业务中存在时间值为0或负数的异常场景,可以在计算前加判断,异常值直接返回
00:00:00即可
内容的提问来源于stack exchange,提问作者Mike Squire
相关产品推荐
相关产品推荐

