2015-09-22 7 views
8

Ich habe begonnen, PHP Carbon für meine Anwendung zu verwenden, da es so viel einfacher zu sein scheint als Datum und Uhrzeit mit der DateTime-Klasse zu verwenden und zu manipulieren. Was ich tun möchte, ist zu überprüfen, ob das gewählte Datum ($ selected_date) größer ist als ein anderes Datum ($ whitelist_date). Ich habe dies in dem unten stehenden Code versucht:PHP Carbon Check, wenn gewähltes Datum größer ist als anderes Datum

$chosen_date = new Carbon($chosen_date); 

    $whitelist_date = Carbon::now('Europe/London'); 
    $whitelist_date->addMinutes(10); 

    echo "Chosen date must be after this date: ".$whitelist_date ."</br>"; 
    echo "Chosen Date: ".$chosen_date ."</br>"; 

    if ($chosen_date->gt($whitelist_date)) { 

     echo "proceed"; 
    } else { 
     echo "dont proceed"; 
    } 

Der ursprüngliche $ chosen_date Wert kommt von POST-Daten. Hier wird die Ausgabe erhalte ich:

Chosen date must be after this date: 2015-09-22 21:21:57 
Chosen Date: 2015-09-22 21:01:00 
proceed 

Klar, dass das gewählte Datum ist nicht größer als das weiße Liste Datum, aber immer noch die if-Anweisung liefert true und Echo „gehen“. Ich habe immer wieder über den Code gesprochen, aber ich kann nicht sehen, wo ich falsch gelaufen bin.

+0

mit Was $ chosen_date Echos wird, bevor sie in den Konstruktor geht? –

+0

Es Echo ist die Formulareingabe zB '09/22/2015 9:36 PM' - in diesem Format. – aqq

Antwort

6

Es könnte sein ..... die Zeitzonen sind nicht die gleichen, so versuchen Sie diese

$chosen_date = new Carbon($chosen_date, 'Europe/London'); 

$whitelist_date = Carbon::now('Europe/London'); 
$whitelist_date->addMinutes(10); 

Denken Sie daran, können Sie immer das Konstrukt Beispiel und stellen sie die Zeitzone für sie:

$date = new Carbon(); 
$date->setTimezone('Europe/London'); 

$whitelist_date = $date->now(); 

Gibt es Tipps, wie ich Daten für Benutzer mit unterschiedlichen Zeitzonen verwalten kann?

Sie können verschiedene Objekte mit unterschiedlichen Zeitzonen erstellen. Probieren Sie das aus und spielen Sie mit den Ergebnissen.

$london_date = new Carbon($chosen_date_from_london, 'Europe/London'); 
$colombia_date = new Carbon($chosen_date_from_colombia, 'Bogota/America'); 

Angenommen, Sie vergleichen sie:

$are_different = $london_date->gt($colombia_date)); 
var_dump($are_different); //FALSE 

Nein, sind sie nicht anders, obwohl sie unterschiedlichen Zeiten sind, wenn Sie auf die Uhr blicken und in verschiedenen Teilen der Welt, sie‘ immer noch im selben Augenblick, der JETZT.

Dort gehen Sie, nur Kiste verschiedene Objekte oder Instanzen von Kohlenstoff() und stellen verschiedene Zeitzonen $instance->setTimeZone(TimeZone);

+0

Perfekt! Das war das Problem, das jetzt scheint. Gibt es Tipps, wie ich Daten für Nutzer mit unterschiedlichen Zeitzonen verwalten kann? – aqq

+0

Aktualisierte Antwort. –

+0

Danke, ich komme drauf! – aqq

-2

Oder versuchen Sie das folgende verwenden:

if ($chosen_date->gte($whitelist_date)) 
+1

Es macht keinen Unterschied. – aqq

+1

OP auch gefragt, größer als, nicht größer als oder gleich ... –

Verwandte Themen