strtotime引起负数的一个问题
在一个开源的crm中看到如下代码
$update_time = $param['update_time'];
if (strtotime($param['update_time'])) {
$update_time = strtotime($param['update_time']);
}
if (!$is_lock && $deal_status !== '已成交') {
$follow_time = time() - $param['follow_day'] * 86400;
$deal_time = time() - $param['deal_day'] * 86400;
if (($update_time < $follow_time) || ($param['deal_time'] < $deal_time)) {
$isPool = 1; //是公海
} else {
$sub_follow_day = ceil(($update_time - $follow_time) / 86400);
$sub_deal_day = ceil(($param['deal_time'] - $deal_time) / 86400);
$poolDay = ($sub_deal_day > $sub_follow_day) ? $sub_follow_day : $sub_deal_day;
$poolDay = $poolDay ?: 0;
if ($poolDay < 0) {
$isPool = 1; //是公海
}
}
其中$update_time是个时间戳,但是为什么要用if (strtotime($param[‘update_time’]))这玩意儿判断暂且不说(我也看不懂为什么这样,但是这玩意儿正常运行)但是到 2020/9/18 14:24:44这个时候 此时的时间戳为1600410284 导致strtotime(1600410284) 为-53182281559,导致$update_time < $follow_time 此时逻辑就暴雷了。。
总结下问题:
strtotime(1600413015) 值为32999644841
strtotime(1600410284) 值为-53182281559
那么问题来了 为什么一个值为正数 一个值为负数。括号里面的值为时间戳
期待大家的答案
推荐文章: