2016-04-22 9 views
0

Ich habe gesucht, wie zu prüfen, ob ein Datum zwischen anderen Daten ist und es scheint aus dem, was ich gelesen habe, dass ich einfach ein verwenden kann if-Anweisung mit der Funktion date() in PHPÜberprüfen, ob ein Datum zwischen anderen Daten in PHP ist nicht so, wie es sollte

Die Funktion, die ich gemacht habe funktioniert in den meisten Fällen, aber manchmal ist es falsch. Ich bin mir nicht sicher warum.

function checkToday($date1, $date2, $today) 
{ 

    if($date1 < $today && $date2 > $today) 
    { 
     return "between"; 
    } elseif ($date1 < $today) { 
     return "before"; 
    } else { 
     return "after"; 
    } 
} 

Ich habe es mit vielen verschiedenen Terminen genannt, und sie alle scheinen mit Ausnahme dieser zu arbeiten:

$startDate = date('d-m-Y', strtotime("07-03-2016")); 
$endDate = date('d-m-Y', strtotime("19-05-2016")); 
$currDate= date('d-m-Y'); 
$check = checkToday($startDate, $endDate, $currDate); 
echo $check.' '; 
echo $startDate.' '; 
echo $endDate.' '; 
echo $currDate.' '; 

Diese Ausgänge: vor 2016.07.03 19-05-2016 22- 04-2016

Aber klar 22-04-2016 ist zwischen 2016.07.03 und 19-05-2016

Irgendwelche Ideen?

Dank

+0

timestaps vergleichen, aber nicht Srings – splash58

Antwort

1

Sie vergleichen die Daten als Strings, das ist, warum es nicht richtig funktioniert.

Sie müssen die Zeitstempel vergleichen (zurückgegeben von time() oder strtotime()) oder DateTime Objekte verwenden.

Beispiel mit Datumzeit:

<?php 

function checkToday($date1, $date2, $today) 
{  
    if($date1 < $today && $date2 > $today) 
    { 
     return "between"; 
    } elseif ($date1 < $today) { 
     return "before"; 
    } else { 
     return "after"; 
    } 
} 

$startDate = new DateTime("2016-03-07"); 
$endDate = new DateTime("2016-05-19"); 
$currDate= new DateTime(); 
$check = checkToday($startDate, $endDate, $currDate); 

echo $check.' '; // Returns between 
echo $startDate->format("d-m-Y").' '; 
echo $endDate->format("d-m-Y").' '; 
echo $currDate->format("d-m-Y").' '; 
0

Es gibt eine weitere Funktion strtotime in PHP. Sie sollten diese Funktion verwenden, um Termine in PHP zu vergleichen, wie wie unter

function checkToday($date1, $date2, $today) 
{  
    if(strtotime($date1) < strtotime($today) && strtotime($date2) > strtotime($today)) 
    { 
     return "between"; 
    } elseif (strtotime($date1) < strtotime($today)) { 
     return "before"; 
    } else { 
     return "after"; 
    } 
} 
+0

Ich wusste, dass es etwas muss einfach sein! Ich danke dir sehr. Dies wurde behoben –

+0

Willkommen. Akzeptiere die Antwort und aktualisiere sie. –

+0

Ich habe nicht genug 'Reputation', um es noch zu tun. Es wird nicht öffentlich gezeigt. –

Verwandte Themen