/** * 时间相减运算 * @param string $source 原时间 * @param string $dest 目标时间 * @param string $unit 单位 * @param bool $roundIt 是否将结果四舍五入 * @return int */ public static function compare($source, $dest, $unit, $roundIt = false) { if ($source && $dest) { if (is_object($source) && get_class($source) == 'DateTime') { $source = $source->getTimeStamp(); } if (is_object($dest) && get_class($dest) == 'DateTime') { $dest = $dest->getTimeStamp(); } if (!is_numeric($source)) { $source = DateTime::toTimeStamp($source); } if (!is_numeric($dest)) { $dest = DateTime::toTimeStamp($dest); } $result = $source - $dest; if ($result != 0) { switch ($unit) { case 'yy': $result = $result / 31536000; break; //年 //年 case 'mm': $result = $result / 2592000; break; //月 //月 case 'dd': $result = $result / 86400; break; //日 //日 case 'h': $result = $result / 3600; break; //时 //时 case 'm': $result = $result / 60; break; //分 //分 default: break; //秒 } } if ($roundIt) { $result = intval(round($result)); } } else { $result = false; } return $result; }