两个日期之间的所有日期和所有月份
/** * 两个日期之间的所有日期 * * @param string $start 开始日期 $end 结束日期 * @return array(本月开始时间,本月结束时间) */ function prDates($start, $end) { $dt_start = strtotime($start); $dt_end = strtotime($end); $arr = []; while ($dt_start <= $dt_end) { array_push($arr, date('Y-m-d', $dt_start)); $dt_start = strtotime('+1 day', $dt_start); } return $arr; } /** * 两个日期之间的所有月份 * * @param string $start 开始日期 $end 结束日期 * @return array(开始月,结束月) */ function prMonthsk($start, $end) { $time1 = strtotime($start); // 自动为00:00:00 时分秒 两个时间之间的年和月份 $time2 = strtotime($end); $monarr = array(); $monarr[] = date('Y-m', $time1); // 当前月; while (($time1 = strtotime('+1 month', $time1)) <= $time2) { $monarr[] = date('Y-m', $time1); // 取得递增月; } array_push($monarr, date('Y-m', $time2)); return array_unique($monarr); } /** * 获取指定月份的第一天开始和最后一天结束的时间戳 * * @param int $y 年份 $m 月份 * @return array(本月开始时间,本月结束时间) */ function mFristAndLast($y = "", $m = "") { if ($y == "") $y = date("Y"); if ($m == "") $m = date("m"); $m = sprintf("%02d", intval($m)); $y = str_pad(intval($y), 4, "0", STR_PAD_RIGHT); $m > 12 || $m < 1 ? $m = 1 : $m = $m; $firstday = strtotime($y . $m . "01000000"); $firstdaystr = date("Y-m-01", $firstday); $lastday = strtotime(date('Y-m-d 23:59:59', strtotime("$firstdaystr +1 month -1 day"))); return array( "firstday" => $firstday, "lastday" => $lastday ); }