Heim > Fragen und Antworten > Hauptteil
Wie erhalte ich die Anzahl der Tage für zwei oder mehr potenziell überlappende Datumsbereiche (CarbonPeriod)?
$startDate_1 = '2022-12-01'; $endDate_1 = '2022-12-10'; $startDate_2 = '2022-12-06'; $endDate_2 = '2022-12-15'; $startDate_3 = '2022-12-21'; $endDate_3 = '2022-12-25'; $dateRange_1 = CarbonPeriod::create($startDate_1, $endDate_1); $dateRange_2 = CarbonPeriod::create($startDate_2, $endDate_2); $dateRange_3 = CarbonPeriod::create($startDate_3, $endDate_3);
Zum Beispiel habe ich, wie oben gezeigt, drei Datumsbereiche. Ich muss die Gesamtzahl der sich nicht überschneidenden Tage in allen drei Datumsbereichen ermitteln. In diesem Beispiel wären es 20 Tage. Gibt es in Carbon/CarbonPeriod eine integrierte Methode, um dies zu erreichen?
P粉4751269412023-09-10 10:41:19
你可以只需合并和去重它们。
$startDate_1 = '2022-12-01'; $endDate_1 = '2022-12-10'; $startDate_2 = '2022-12-06'; $endDate_2 = '2022-12-15'; $startDate_3 = '2022-12-21'; $endDate_3 = '2022-12-25'; $dateRange_1 = CarbonPeriod::create($startDate_1, $endDate_1); $dateRange_2 = CarbonPeriod::create($startDate_2, $endDate_2); $dateRange_3 = CarbonPeriod::create($startDate_3, $endDate_3); // 20个日期,只包含没有重复的日期。 $uniqueDays = array_unique(array_merge($dateRange_1->toArray(), $dateRange_2->toArray(), $dateRange_3->toArray()));