$smallDate 返回 > 0 * $bigDate < $smallDate 返回 < 0 * $bigDate = $smallDate 返回 = 0 * * @param $bigDate * @param $smallDate * * @returns */ public static function dateCmp($bigDate, $smallDate) { if (!self::isDate($bigDate) || !self::isDate($smallDate)) { throw new Exception('参数不是合法的日期'); } return strcmp($bigDate, $smallDate); } public static function isDate($dateTime, $checkTime = false) { $strArray = explode(' ', $dateTime); $date = $strArray[0]; $time = $strArray[1]; // 不是 dateTime 格式 if (!$date || !$time) { return false; } $dateArray = explode('-', $date); $year = $dateArray[0]; $month = $dateArray[1]; $day = $dateArray[2]; // 年在 1-9999 年 if (!self::_checkLimit($year, 1, 9999)) { return false; } if (!self::_checkLimit($month, 1, 12)) { return false; } if (!self::_checkLimit($day, 1, 31)) { return false; } if ($checkTime) { $timeArray = explode(':', $time); $hour = $timeArray[0]; $minute = $timeArray[1]; $second = $timeArray[2]; if (!self::_checkLimit($hour, 0, 24)) { return false; } if (!self::_checkLimit($minute, 0, 60)) { return false; } if (!self::_checkLimit($second, 0, 60)) { return false; } } return true; } /** * 检查字符串是否在 start to 的区间内 * * @param $str * @param $start * @param $to * * @returns */ private static function _checkLimit($str, $start, $to) { if ($str < $start || $str > $to) { return false; } return true; } }