2015-09-22 14 views
8

Ho iniziato a utilizzare PHP Carbon per la mia applicazione poiché sembra molto più semplice dell'uso e della modifica di data/ora con la classe DateTime. Quello che voglio fare è controllare se la data scelta ($ chosen_date) è maggiore di un'altra data ($ whitelist_date). Ho provato questo nel seguente codice:Controllo carbone PHP Se la data scelta è maggiore di un'altra 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"; 
    } 

Il valore originario $ chosen_date proviene da dati successivi. Qui è l'uscita ottengo:

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

Chiaramente la data scelta non è superiore alla data di whitelist, ma ancora l'istruzione if restituisce true e l'eco di "proseguire". Sono stato sopra il codice più e più volte, ma non riesco a vedere dove ho sbagliato.

+0

Cosa $ chosen_date riecheggia prima di andare al costruttore? –

+0

In questo formato, echo è l'input del modulo, ad esempio "22/09/2015 09:36 PM". – aqq

risposta

6

potrebbe essere ..... i fusi orari non sono le stesse, in modo da provare questo

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

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

Ricordati che puoi sempre costruire il dell'istanza e impostare il fuso orario per esso:

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

$whitelist_date = $date->now(); 

Qualche suggerimento su come posso gestire i dati per utenti con fusi orari diversi?

È possibile creare oggetti diversi con fusi orari diversi. Prova questo e gioca con i risultati.

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

Diciamo che li confrontano:

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

No, non sono diverso, anche se sono tempi diversi quando si guardi l'orologio e in diverse parti del mondo, hanno' stai ancora nello stesso Momento Presente, l'ORA.

Ci si va, solo cassa diversi oggetti o istanze di carbonio(), e impostare fusi orari diversi utilizzando $instance->setTimeZone(TimeZone);

+0

Perfetto! Questo era il problema che sembra funzionare ora. Qualche consiglio su come posso gestire i dati per utenti con fusi orari diversi? – aqq

+0

Risposta aggiornata. –

+0

Grazie, ci arriverò! – aqq

-2

O provare a utilizzare il seguente:

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

Non fa differenza. – aqq

+1

OP chiesto anche maggiore di, non maggiore o uguale ... –

Problemi correlati