2015-09-22 21 views
8

Zacząłem używać PHP Carbon dla mojej aplikacji, ponieważ wydaje się to o wiele łatwiejsze niż używanie daty i czasu z klasą DateTime i manipulowanie nimi. Co chcę zrobić, to sprawdzić, czy wybrana data ($ selected_date) jest większa niż inna data ($ biała lista). Próbowałem tego w poniższym kodzie:PHP Carbon Check, jeśli wybrana data jest większa niż inna Data

$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"; 
    } 

Oryginalna wartość wybranego dnia $ pochodzi z danych POST. Oto wynik uzyskać:

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

Wyraźnie wybrana data nie jest większa niż białej listy datą, lecz nadal if zwraca true i echo „kontynuować”. Ciągle kręciłem kod, ale nie widzę, gdzie popełniłem błąd.

+0

Co $ chosen_date echa przed pójściem do konstruktora? –

+0

To echo jest formą wejściową np. '09/22/2015 9:36 PM' - w tym formacie. – aqq

Odpowiedz

6

może być ..... strefy czasowe nie są takie same, więc spróbuj tego

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

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

Pamiętaj zawsze można skonstruować instancja i ustawić strefę czasową dla niego:

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

$whitelist_date = $date->now(); 

Jakieś wskazówki, w jaki sposób mogę zarządzać danymi dla użytkowników z różnymi strefami czasowymi?

Można tworzyć różne obiekty z różnymi strefami czasowymi. Wypróbuj to i graj z wynikami.

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

Powiedzmy je porównać:

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

Nie, nie są one różne, chociaż są one różne czasy, kiedy patrzył na zegar w różnych częściach świata, oni wciąż w tej samej chwili obecnej, TERAZ.

Proszę bardzo, tylko paka różnych obiektów lub instancje Carbon() i ustawić różne strefy czasowe korzystania $instance->setTimeZone(TimeZone);

+0

Idealny! To był problem, który wydaje się teraz działać. Jakieś wskazówki, w jaki sposób mogę zarządzać danymi dla użytkowników z różnymi strefami czasowymi? – aqq

+0

Zaktualizowana odpowiedź. –

+0

Dzięki, zabiorę się za to! – aqq

-2

Albo spróbuj użyć jednego z następujących:

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

To nie ma znaczenia. – aqq

+1

OP również poprosił o większy, nie większy niż lub równy ... –