// dd($this->diffWeeks('2024-01-01','2024-01-01')); // 1
// dd($this->diffWeeks('2024-01-07','2024-01-08')); // 2
// dd($this->diffWeeks('2024-01-07','2024-01-11')); // 2
// dd($this->diffWeeks('2024-01-07','2024-01-14')); // 2
// dd($this->diffWeeks('2024-01-07','2024-01-15')); // 3
// dd($this->diffWeeks('2023-12-21','2024-01-7')); // 3
// dd($this->diffWeeks('2023-12-15','2024-02-09')); // 9
function diffWeeks($startDate, $endDate)
{
// 開始日期所在周的最後一天
$startDateEndOfWeek = Carbon::parse($startDate)->endOfWeek();
// 開始日期所在周的最後一天 >= 結束日期,說明在同一自然周
if ($startDateEndOfWeek >= Carbon::parse($endDate)) {
return 1;
}
// 結束日期所在周的第一天
$endDateEndOfWeek = Carbon::parse($endDate)->startOfWeek();
// 結束日期所在周的第一天、開始日期所在周的最後一天 之間有多少周
$diffDays = Carbon::parse($endDateEndOfWeek->toDateString())->diffInDays($startDateEndOfWeek->toDateString());
$completeWeeks = intval($diffDays / 7);
// 不在同一周,最少2周
return $completeWeeks + 2;
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結