PHP时间处理需求:获取+6小时及再加15分钟的时分格式
Hey,我来帮你搞定这个报错问题!
你遇到的Call to a member function format() on integer错误,核心原因很简单:strtotime()返回的是一个Unix时间戳(也就是整数),而format()是PHP中DateTime对象的方法,你直接给整数调用对象方法肯定会报错呀!
下面给你两种靠谱的解决方案,按需选择:
方案一:用DateTime类(推荐,更直观灵活)
DateTime是PHP处理时间的现代方式,代码可读性更高,也更容易维护复杂的时间操作:
// 初始化当前时间的DateTime对象 $current = new DateTime(); // 计算当前时间+6小时的时分值,存入$dateNow $dateNowTime = (clone $current)->add(new DateInterval('PT6H')); $dateNow = $dateNowTime->format('H:i'); // 在$dateNow的基础上再加15分钟,得到$dateThen的时分值 $dateThenTime = (clone $dateNowTime)->add(new DateInterval('PT15M')); $dateThen = $dateThenTime->format('H:i'); // 测试输出 echo "dateNow: {$dateNow}<br>"; echo "dateThen: {$dateThen}";
这里用clone是为了避免修改原始的$current对象,DateInterval的PT6H表示“增加6小时”,PT15M表示“增加15分钟”,语义非常清晰。
方案二:用时间戳+date函数(兼容旧版PHP)
如果你习惯用传统的时间戳写法,只需要把时间戳传给date()函数来格式化就行,不用去调用对象方法:
// 获取当前时间+6小时的时间戳,再格式化为时分 $nowTimestamp = strtotime('+6 hours'); $dateNow = date('H:i', $nowTimestamp); // 以$nowTimestamp为基准,再加15分钟后格式化 $thenTimestamp = strtotime('+15 minutes', $nowTimestamp); $dateThen = date('H:i', $thenTimestamp); // 测试输出 echo "dateNow: {$dateNow}<br>"; echo "dateThen: {$dateThen}";
strtotime的第二个参数可以指定计算的基准时间戳,这样直接在6小时后的时间基础上加15分钟,一步到位。
拿你给出的示例时间2018-01-07 16:35:10测试,两种方案都会输出:
dateNow: 22:35
dateThen: 22:50
完全符合你的需求哦!
内容的提问来源于stack exchange,提问作者Lee Cheung
相关产品推荐
相关产品推荐

