2016-03-21 7 views
-1

Ich möchte überprüfen, ob es zwischen zwei Daten in PHP irgendwo sat oder sun gibt.Wie überprüfe ich, ob es ein Wochenende zwischen zwei Daten in PHP gibt?

$fromDate = '03/21/2016'; 
$toDate = '03/28/2016'; 

Ich habe versucht andere Lösung hier gefragt, aber sie haben nicht gut funktioniert. Ich möchte es in Laravel 5.2, also wenn es eine einfache Möglichkeit, damit umzugehen, bitte führen Sie mich. Vielen Dank!

Update ich möchte auch, wenn es wochentags (mon-fri) zwischen zwei Daten gibt. Ich brauche es, weil der Benutzer nur Samstag und Sonntag wählen kann, also muss ich in diesem Zustand die Wochentagsoption vor ihm verbergen. Was ich also brauche, ist eine Methode, die mir sagt, ob Anfangs- und Enddatum Wochenende oder Wochentage oder beides hat.

Antwort

1

Sie können date("N") verwenden, um den aktuellen Wochentag zu erhalten und die Differenz der Tage zwischen Ihren Daten hinzuzufügen. Wenn dies größer oder gleich 6 ist, dann ist es ein Wochenende zwischen oder ein Datum ist am Wochenende.

//Get current day of week. For example Friday = 5 
$day_of_week = date("N", strtotime($fromDate)); 

$days = $day_of_week + (strtotime($toDate) - strtotime($fromDate))/(60*60*24) 
//strtotime(...) - convert a string date to unixtimestamp in seconds. 
//The difference between strtotime($toDate) - strtotime($fromDate) is the number of seconds between this 2 dates. 
//We divide by (60*60*24) to know the number of days between this 2 dates (60 - seconds, 60 - minutes, 24 - hours) 
//After that add the number of days between this 2 dates to day of week. So if first date is friday and days between this 2 dates is: 3 the sum will be 5+3 = 8 and it's bigger than 6 so we know it's a weekend between. 



if($days >= 6){ 
    //we have a weekend. Because day of week of first date + how many days between this 2 dates are greater or equal to 6 (6=Saturday) 
} else { 
    //we don't have a weekend 
} 
+0

es funktionierte. Vielen Dank! kannst du bitte erklären, dass es funktioniert, damit ich auch verstehen kann, was hier passiert. –

+0

Ich habe eine Frage, Ihre Lösung sagen, ob es ein Wochenende zwischen zwei Daten gibt. Was ist, wenn ich möchte, wenn zwischen zwei Daten ein Wochentag (Mo-Fr) ist? Ich brauche es, weil der Benutzer nur Samstag und Sonntag wählen kann, also muss ich in diesem Zustand die Wochentagsoption vor ihm verbergen. –

+0

@UmairMalik Ich habe meine Antwort mit Kommentaren aktualisiert, damit Sie besser verstehen können, was es tut. Lass es mich wissen, wenn etwas nicht klar ist. –

0

versuchen

<?php 
    $is_weekend = 0; 
    $fromDate = strtotime('2016-03-21'); 
    $toDate = strtotime('2016-03-28'); 
    while (date("Y-m-d", $fromDate) != date("Y-m-d", $toDate)) { 
     $day = date("w", $fromDate); 
     if ($day == 0 || $day == 6) { 
      $is_weekend = 1; 
     } 
     $fromDate = strtotime(date("Y-m-d", $fromDate) . "+1 day"); 
    } 
    echo $is_weekend; 

Hacke es hilft :)

Verwandte Themen