两个日期之间的所有日期和所有月份

/**
 * 两个日期之间的所有日期
 *
 * @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
    );
}

 

posted @ 2021-04-16 19:41  爱家家的卡卡  阅读(152)  评论(0编辑  收藏  举报