![](/img/trans.png)
[英]I Want To Get the First or Last Friday in a Month in Laravel using Carbon
[英]get last month and year using carbon laravel
这可能很简单,我有$month
和$year
,但我正在尝试获取lastMonthYear
和lastToLastMonthYear
。
$date = Carbon::create($year, $month)->startOfMonth();
$sameMonthLastYear = $date->subYear()->format('Ym');
$lastMonthYear = $date->subMonth()->format('Ym');
$LastToLastMonthYear = $date->subMonth()->format('Ym');
考虑到 $month=9 和 $year=2021,我试图得到
sameMonthLastYear = 202009
lastMonthYear = 202108
lastToLastMonthYear = 202107
但我得到
sameMonthLastYear = 202009
lastMonthYear = 202008
lastToLastMonthYear = 202008
因为 $date 值不断更新每一行。 有什么办法可以得到预期的结果吗?
正确的方法是使用CarbonImmutable
:
$date = CarbonImmutable::create($year, $month);
$sameMonthLastYear = $date->subYear()->format('Ym'); //202009
$lastMonthYear = $date->subMonth()->format('Ym'); //202108
$LastToLastMonthYear = $date->subMonths(2)->format('Ym'); //202107
使用CarbonImmutable
,您对$date
CarbonImmutable
的更改不会CarbonImmutable
。
我还删除了startOfMonth
方法,它没有用,因为默认情况下,Carbon 实例将是:
Carbon\CarbonImmutable @1630454400 {#5430
date: 2021-09-01 00:00:00.0 UTC (+00:00),
}
您可以使用copy()
方法:
$date = Carbon::create($year, $month)->startOfMonth();
$sameMonthLastYear = $date->copy()->subYear()->format('Ym');
$lastMonthYear = $date->copy()->subMonth()->format('Ym');
$LastToLastMonthYear = $date->copy()->subMonths(2)->format('Ym');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.