php返回日历

php返回一个日历数据:

/*获取日历*/
function getCalendar()
{
    $year = !empty($_GET['year'])?intval($_GET['year']):date('Y');//当前年
    $month = !empty($_GET['month'])?intval($_GET['month']):date('m');//当前月

    $start_time = strtotime(date($year . '-' . $month . '-01 00:00:00'));
    $end_time = strtotime(date($year . '-' . $month . '-'.date('t',$start_time).' 23:59:59'));
    $day_now = date('Ymd');//当前时间

    $end_days = date('w', $end_time);//当月最后一天星期几
    $start_days = date('w', $start_time);//当月第一天星期几
    //上月剩余天数
    $last_rest = $start_days;
    $calendar = [];
    for ($i = $last_rest; $i > 0; $i--) {
        $calendar[] = [
            'date' => date('Y-m-d', $start_time - $i * 24 * 3600),
            'day' => intval(date('j', $start_time - $i * 24 * 3600)),
            'is_same_mouth' => date('n', $start_time - $i * 24 * 3600) == $month ? 1 : 0,//0-不是当月 1-是当月
            'is_now' => (date('Ymd', $start_time - $i * 3600) == $day_now) ? 1 : 0,//2-不是当天 1-是当天
        ];
    }

    //当月第一排天数
    $start = 7 - $start_days;
    $time_start = $start_time;
    for ($i = $start; $i > 0; $i--) {
        $calendar[] = [
            'date' => date('Y-m-d', $time_start),
            'day' => intval(date('j', $time_start)),
            'is_same_mouth' => date('n', $time_start) == $month ? 1 : 0,//0-不是当月 1-是当月
            'is_now' => (date('Ymd', $time_start) == $day_now) ? 1 : 0,//0-不是当天 1-是当天
        ];
        $time_start += 24 * 3600;
    }
    //中间整一个星期在当月中
    $middle = ((date('t', $start_time) - (7 - $start_days) - ($end_days + 1)) / 7);
    for ($j = 1; $j <= $middle; $j++) {
        for ($k = 0; $k < 7; $k++) {
            $calendar[] = [
                'date' => date('Y-m-d', $time_start),
                'day' => intval(date('j', $time_start)),
                'is_same_mouth' => date('n', $time_start) == $month ? 1 : 0,//0-不是当月 1-是当月
                'is_now' => (date('Ymd', $time_start) == $day_now) ? 1 : 0,//0-不是当天 1-是当天
            ];
            $time_start += 24 * 3600;
        }
    }

    //当月最后一排剩余天数
    $last = $end_days + 1;
    for ($i = 0; $i < $last; $i++) {
        $calendar[] = [
            'date' => date('Y-m-d', $time_start),
            'day' => intval(date('j', $time_start)),
            'is_same_mouth' => date('n', $time_start ) == $month ? 1 : 0,//0-不是当月 1-是当月
            'is_now' => (date('Ymd', $time_start) == $day_now) ? 1 : 0,//0-不是当天 1-是当天
        ];
        $time_start += 24 * 3600;
    }
    //下个月在显示的天数
    $next_mouth = 7 - ($end_days + 1);
    for ($i = 0; $i < $next_mouth; $i++) {
        $calendar[] = [
            'date' => date('Y-m-d', $time_start),
            'day' => intval(date('j', $time_start)),
            'is_same_mouth' => date('n', $time_start ) == $month ? 1 : 0,//0-不是当月 1-是当月
            'is_now' => (date('Ymd', $time_start) == $day_now) ? 1 : 0,//0-不是当天 1-是当天
        ];
        $time_start += 24 * 3600;
    }

    echo json_encode($calendar,JSON_UNESCAPED_UNICODE);
    exit();
}

结果返回(2021/04):

[
    {
        "date": "2021-03-28",
        "day": 28,
        "is_same_mouth": 0,
        "is_now": 0
    },
    {
        "date": "2021-03-29",
        "day": 29,
        "is_same_mouth": 0,
        "is_now": 0
    },
    {
        "date": "2021-03-30",
        "day": 30,
        "is_same_mouth": 0,
        "is_now": 0
    },
    {
        "date": "2021-03-31",
        "day": 31,
        "is_same_mouth": 0,
        "is_now": 0
    },
    {
        "date": "2021-04-01",
        "day": 1,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-02",
        "day": 2,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-03",
        "day": 3,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-04",
        "day": 4,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-05",
        "day": 5,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-06",
        "day": 6,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-07",
        "day": 7,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-08",
        "day": 8,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-09",
        "day": 9,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-10",
        "day": 10,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-11",
        "day": 11,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-12",
        "day": 12,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-13",
        "day": 13,
        "is_same_mouth": 1,
        "is_now": 1
    },
    {
        "date": "2021-04-14",
        "day": 14,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-15",
        "day": 15,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-16",
        "day": 16,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-17",
        "day": 17,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-18",
        "day": 18,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-19",
        "day": 19,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-20",
        "day": 20,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-21",
        "day": 21,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-22",
        "day": 22,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-23",
        "day": 23,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-24",
        "day": 24,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-25",
        "day": 25,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-26",
        "day": 26,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-27",
        "day": 27,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-28",
        "day": 28,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-29",
        "day": 29,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-04-30",
        "day": 30,
        "is_same_mouth": 1,
        "is_now": 0
    },
    {
        "date": "2021-05-01",
        "day": 1,
        "is_same_mouth": 0,
        "is_now": 0
    }
]


评论/留言