Api接口实战:Carbon类获取上月第一天和最后一天

Carbon获取指定月份

tips1:本月第一天和本月最一天

    Carbon::now()->startOfMonth()->toDateTimeString();
    Carbon::now()->endOfMonth()->toDateTimeString();

tips2:上个月第一天

    // 方法1
    $firstOfMonth = new Carbon('first day of last month');
    $firstOfMonth->startOfMonth()->toDateTimeString();
    // 方法2
    Carbon::now()->startOfMonth()->subMonth()->toDateTimeString();
    // 方法3
    Carbon::now()->subMonthWithoutOverflow()->startOfMonth()->toDateTimeString();

tips3:上个月最后一天

    // 方法1
    $lastOfMonth = new Carbon('last day of last month');
    $lastOfMonth->endOfMonth()->toDateTimeString();
    // 方法2  
    Carbon::now()->startOfMonth()->subMonth()->endOfMonth()->toDateTimeString();
    // 方法3
    Carbon::now()->subMonthWithoutOverflow()->endOfMonth()->toDateTimeString();

tips4:判断指定时间是否在本月内

    Carbon::parse($timestamp)->isCurrentMonth()

tips5:判断指定时间是否在上个月内

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

也可以这样:

// 上月第一天
Carbon::now()->startOfMonth()->subMonth()->toDateTimeString();
// 上月最后一天
Carbon::now()->startOfMonth()->subMonth()->endOfMonth()->toDateTimeString();

但是不能将startOfMonth放到subMonth后面,原因见:github.com/briannesbitt/Carbon/iss...

4年前 评论
lyfireworks07 4年前
LuminEe 4年前
诺大的院子 (作者) 4年前
PHPer技术栈 (楼主) 4年前

上个月直接 today()->subMonth()

4年前 评论

WARN:这里面有坑,在获取上月第一天..可测试在3月29日获取上月第一天,结果是3月1日,并不是2月1日

4年前 评论
JerryBool 4年前
PHPer技术栈 (楼主) 4年前
BlackSky (作者) 4年前
PHPer技术栈 (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!