PHP时间差计算函数return返回意外字符串问题排查
问题原因
- 变量名不匹配:你定义的
time_interval函数接收的两个参数名为mf_start_time和mf_end_time,但函数内部调用strtotime时使用的是未定义的$start_time和$end_time。这会触发PHP未定义变量警告,strtotime接收到空值后会返回false,后续所有时间差计算都基于错误值执行,自然返回异常字符串。 - 语法混用:代码开头用了Javascript的
var关键字定义变量,PHP中定义变量不需要加var,直接使用$变量名 = 赋值的格式即可,否则会触发PHP语法错误。
修复后参考代码
$mf_start_time = "10:30:30"; $mf_end_time = "11:10:10"; function time_interval($mf_start_time,$mf_end_time) { $s = strtotime($mf_start_time); $e = strtotime($mf_end_time); if ($s < $e) { $a = $e - $s; } else { $e = strtotime('+1 day',$e); $a = $e - $s; } $h = floor($a/3600); $m = floor(($a%3600)/60); $s = $a%60; return trim(($h?$h.' hour ':'').($m?$m.' minute ':'').($s?$s.' second ':'')); }
调用该函数计算你给出的两个时间,会正常返回39 minute 40 second。
内容的提问来源于stack exchange,提问作者Hadrian Clayton
相关产品推荐
相关产品推荐

