From d4531c7df0d26f5b3e4f0ce63bc668294d59027b Mon Sep 17 00:00:00 2001 From: Karson Date: Thu, 20 Jan 2022 16:00:57 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=AE=A1=E7=AE=97=E6=9C=88?= =?UTF-8?q?=E5=A4=A9=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extend/fast/Date.php | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/extend/fast/Date.php b/extend/fast/Date.php index 2b4ad62d..84919255 100644 --- a/extend/fast/Date.php +++ b/extend/fast/Date.php @@ -191,13 +191,13 @@ class Date break; case 'month': $_timestamp = mktime(0, 0, 0, $month + $offset, 1, $year); - $time = $position ? $_timestamp : mktime(23, 59, 59, $month + $offset, cal_days_in_month(CAL_GREGORIAN, date("m", $_timestamp), date("Y", $_timestamp)), $year); + $time = $position ? $_timestamp : mktime(23, 59, 59, $month + $offset, self::days_in_month(date("m", $_timestamp), date("Y", $_timestamp)), $year); break; case 'quarter': $_month = date("m", mktime(0, 0, 0, (ceil(date('n', mktime(0, 0, 0, $month, $day, $year)) / 3) + $offset) * 3, $day, $year)); $time = $position ? mktime(0, 0, 0, 1 + ((ceil(date('n', $baseTime) / 3) + $offset) - 1) * 3, 1, $year) : - mktime(23, 59, 59, (ceil(date('n', $baseTime) / 3) + $offset) * 3, cal_days_in_month(CAL_GREGORIAN, (ceil(date('n', $baseTime) / 3) + $offset) * 3, $year), $year); + mktime(23, 59, 59, (ceil(date('n', $baseTime) / 3) + $offset) * 3, self::days_in_month((ceil(date('n', $baseTime) / 3) + $offset) * 3, $year), $year); break; case 'year': $time = $position ? mktime(0, 0, 0, 1, 1, $year + $offset) : mktime(23, 59, 59, 12, 31, $year + $offset); @@ -208,4 +208,19 @@ class Date } return $time; } + + /** + * 获取指定年月拥有的天数 + * @param int $month + * @param int $year + * @return false|int|string + */ + public static function days_in_month($month, $year) + { + if (function_exists("cal_days_in_month")) { + return cal_days_in_month(CAL_GREGORIAN, $month, $year); + } else { + return date('t', mktime(0, 0, 0, $month, 1, $year)); + } + } }