一个用php自动计算预约时间差的函数
生活中我们经常用到预约功能,如预约做饭、预约洗衣,需要人为计算与现在的相差的时间,比较麻烦也可能算错,今天分享一段自动计算的函数,直接按结果输入到设备即可,如果设备不能精确到小数,也可以设置允许提前,还是允许推后。
用a表示可以提前不可以推后的情形。
用b表示可以推后不可以提前的情形。
比如做饭,需要完成的时间为07:00,可以提前一点做好,但是不能推后,不然我们上班要迟到,我们设置为07:00a
比如洗衣服,晚上23:00-07:00电价下浮,不可以提前洗电价不划算,可以推后,我们设置为23:00b
我们用php来分别计算我们在设备上设置的时间:
function shijiancha($time)
{
$now = date('Y-m-d H:i');
$last = substr($time, -1);
$time = str_replace($last, '', $time);
$next = date('Y-m-d ' . $time);
if (strtotime($next) < strtotime($now)) {
$next = date('Y-m-d', strtotime('+1 day')) . ' ' . $time;
}
$cha = (strtotime($next) - strtotime($now)) / 3600;
$cha = number_format($cha, 1);
$new = explode('.', $cha);
if ($last == 'b') {
$set = $new[1] > 0 ? $new[0] + 1 : $new[0]; //推后
} else {
$set = $new[0] . '.' . ($new[1] >= 5 ? 5 : 0); //精确到0.5小时
}
return ['org' => $time, 'cha' => $cha, 'set' => $set];
}
运行结果:
与预约时间 07:00 实际相差 16.9 小时,可设置 16.5 小时(直接在机器上输入结果即可)
与预约时间 23:00 实际相差 8.4 小时,可设置 9 小时(直接在机器上输入结果即可)