从SQL Server获取的Time值在PHP中转字符串后不匹配求助
问题分析&解决方案
嘿,我一眼就揪出问题的核心啦!你当前的输出不匹配,最主要的原因是你用错了日期格式符!
你写的格式字符串是"H:m:s",这里的m代表的是月份(两位数字),而不是你想要的分钟!分钟对应的格式符应该是i。
当你用m的时候,PHP会从时间对象里取月份值——因为你的字段是time类型,没有日期部分,它会用默认日期的月份(比如如果默认是3月,就会输出03),这就正好对应了你看到的23:03:12里的03,而原时间的分钟15根本没被正确读取!
修正后的代码
把格式符换成H:i:s就可以正确读取时分秒了:
<?= date_format( $row["time"], "H:i:s" ) ?>
关于时区的补充
虽然这次的问题不是时区导致的,但如果后续遇到时间数值偏移的情况,确实需要确保PHP的时区和数据库的时区一致。你可以在代码开头设置时区,比如:
date_default_timezone_set('Asia/Jakarta'); // 根据你的实际时区调整
或者在php.ini文件里配置date.timezone参数,避免每次都在代码里设置。
内容的提问来源于stack exchange,提问作者Donny Pratama
相关产品推荐
相关产品推荐

