Laravel Carbon 开始 + 上周结束?

Laravel Carbon get start + end of last week?

我有 laravel 开始+本周结束的碳:

$startofcurrentweek =Carbon::now()->startOfWeek(); //2020-02-17 00:00:00
$endofcurrentweek =Carbon::now()->endOfWeek(); //2020-02-23 23:59:59

如何使用 carbon 开始上周,...所以我可以得到,

$startoflasttweek  = 2020-02-10 00:00:00
$endoflastweek  = 2020-02-16 23:59:59

您可以从当前周的开始时间减去 7 天,或者从现在开始减去 7 天,得到一周的开始时间。

$startOfCurrentWeek = Carbon::now()->startOfWeek(); 

$startOfLastWeek  = $startOfCurrentWeek->copy()->subDays(7);
$startOfLastWeek  = Carbon::now()->subDays(7)->startOfWeek();

同样得到上周的结束。

Porloscerros 的回答是正确的,但需要一点修正:

$startOfCurrentWeek = Carbon::now()->startOfWeek(); 

$startOfLastWeek  = $startOfCurrentWeek->copy()->subDays(7);

$startOfLastWeek  = Carbon::now()->subDays(7)->startOfWeek()->endOfDay();

with ->endOfDay() 这将 return 23:59:59 9999.99 而不是 00:00:00(一天的开始)

或者您可以使用 ->endOfWeek() 以获得相同的结果

与上面的答案类似,但更清楚:

$startOfLastWeek = Carbon::now()->subDays(7)->startOfWeek();
$endOfLastWeek = Carbon::now()->subDays(7)->endOfWeek();
  1. 它从当前时间(到上周)减去 7 天,startOfWeek 得到 starting 的日期和时间那一周。
  2. 它从当前时间(到最后一周)减去 7 天,endOfWeek 得到 ending 的日期和时间那一周。

Result/Example?

如果当前时间是2022-04-27 00:00:00.0 UTC (+00:00) 那么结果如下:

  1. 2022-04-18 00:00:00.0 UTC (+00:00)
  2. 2022-04-24 23:59:59.999999 UTC (+00:00)