Example #1
0
 /**
  * 时间相减运算
  * @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;
 }