Laravel中使用Carbon时间类生成日历

日历从星期日开始,通过确定每月第一天所在的星期,计算前后日期。

    public function calendar(Request $request)
    {
        //获取年
        $year = $request->input('year', now()->year);
        //获取月份
        $month     = $request->input('month', now()->month);
        $yearMonth = sprintf("%d-%s", $year, $month);
        //获取月份第一天所在的星期
        $firstDayOfWeek = Carbon::parse("$yearMonth-01")->dayOfWeek;

        //补全
        $day      = 0;
        $calendar = [];
        for ($i = 0; $i < 6; $i++) {
            for ($j = 0; $j < 7; $j++) {
                if ($firstDayOfWeek != 0 and $i == 0) {
                    //根据月初第一天所在的星期,计算出之前几天的日子
                    $day  = Carbon::parse("$yearMonth-01")->subDays($firstDayOfWeek - $j)->day;
                    $date = Carbon::parse("$yearMonth-01")->subDays($firstDayOfWeek - $j)->format("Y-m-d");
                } else {
                    $day++;
                    $date = Carbon::parse("$yearMonth-01")->addDays($day - 1)->format("Y-m-d");
                }
                $calendar[$i][] = $date;
            }
        }

        return $calendar;
    }
本作品采用《CC 协议》,转载必须注明作者和本文链接
面向Google编程
drinke9
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

开公司啦?

3年前 评论
drinke9

@TELstatic 哈哈,开了一个。

3年前 评论
sreio

为什么要后端生成日历,前端有好多的插件啊

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
技术 @ 南通吾八哥网络科技有限公司
文章
1
粉丝
1
喜欢
3
收藏
9
排名:2042
访问:915
私信
所有博文
博客标签
社区赞助商