suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Berechnen Sie die Anzahl der Tage in überlappenden oder nicht überlappenden Datumsbereichen: PHP- und Carbon-Implementierungsmethode

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粉754477325P粉754477325432 Tage vor544

Antworte allen(1)Ich werde antworten

  • P粉475126941

    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()));
    

    Antwort
    0
  • StornierenAntwort