在laravel框架中自带了这个Carbon 时间类
所以平时就用这个类来获取时间戳很方便,在获取上个月的开始时间和结束时间的时候,在31号测试的时候发现本月和上月数据没区别,就打印调试了一下,结果今天发现了bug,获取的上个月时间只能回到30天以前的时间,如果这个月
刚好有31天的话,就会出现此bug
//上个月第一天
Carbon::now()->subMonth()->firstOfMonth()
//上个月最后一天
Carbon::now()->subMonth()->lastOfMonth()
//这个月第一天
Carbon::now()->firstOfMonth()
上面的代码只能获取当前月的30天前的时间,所以获取上个月的时候会出现bug
于是我又仔细研究了一下发现这样写才会不出现上面的问题,
// 获取本月的第一天
$start = new Carbon('first day of this month');
$start = $start->startOfMonth();
//上个月第一天
$firstOfMonth = new Carbon('first day of last month');
$firstOfMonth = $firstOfMonth->startOfMonth();
//上个月最后一天
$lastOfMonth = new Carbon('last day of last month');
$lastOfMonth = $lastOfMonth->endOfMonth();
这样直接实例化上月的第一天的当前时间,然后在运行一下startOfMonth()、endOfMonth();就可以完美解决困扰了