web-dev-qa-db-fra.com

PHP Carbon Check If Chosen Date is Greater than Other Date

J'ai commencé à utiliser PHP Carbon pour mon application car cela semble tellement plus facile que d'utiliser et de manipuler la date/heure avec la classe DateTime. Ce que je veux faire, c'est vérifier si la date choisie ($ selected_date) est supérieure à une autre date ($ whitelist_date). J'ai essayé ceci dans le code ci-dessous:

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

La valeur originale $ selected_date provient des données POST. Voici la sortie que j'obtiens:

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

Il est clair que la date choisie n'est pas supérieure à la date de la liste blanche, mais quand même l'instruction if renvoie true et "continue" d'écho. J'ai parcouru le code encore et encore, mais je ne vois pas où je me suis trompé.

16
aqq

Ce pourrait être ..... les fuseaux horaires ne sont pas les mêmes, alors essayez ceci

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

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

N'oubliez pas que vous pouvez toujours construire l'instance et définir le fuseau horaire pour elle:

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

$whitelist_date = $date->now();

Des conseils sur la façon dont je peux gérer les données pour les utilisateurs avec différents fuseaux horaires?

Vous pouvez créer différents objets avec différents fuseaux horaires. Essayez ceci et jouez avec les résultats.

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

Disons que vous les comparez:

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

Non, ils ne sont pas différents, même si ce sont des moments différents lorsque vous regardez l'horloge et dans différentes parties du monde, ils sont toujours dans le même moment présent, le MAINTENANT.

Voilà, créez simplement différents objets ou instances de Carbon () et définissez différents fuseaux horaires à l'aide de $instance->setTimeZone(TimeZone);

14
Juan Bonnett