web-dev-qa-db-fra.com

Laravel Carbone Voir si la date est dans le passé

Cela me rend très confus, peut-être que c'est quelque chose de simple que je ne vois pas. Si je veux voir si une date est dans le passé d'aujourd'hui, je devrais être capable de faire quelque chose comme ça? 

if( $league->date_start <= Carbon::now() ){
    $join  = false;
    $message = 'Sorry, the league has already started';
}

si je vider les dates son 

$league->date_start = 2017-07-31 00:00:00
Carbon::now() = 2017-11-01 16:29:27

$league->date_start est une date protégée donc c'est une instance carbone 

Mais cela ne fonctionne pas, si je le change en $league->date_start >= Carbon::now() cela fonctionne et ne me laisse pas rejoindre. Je sais que la "ligue" date de début est dans le passé, donc il ne devrait pas être $league->date_start <= Carbon::now() ?????

7
Packy

La méthode Carbon isPast intégrée vous permet d'utiliser:

$league->date_start->isPast()

déterminer si la date est passée ou non

27
Marcin Nabiałek

Essayez d'utiliser if ($league->date_start->diffInSeconds() >= 0). La méthode diffInSeconds renvoie la différence entre l'heure actuelle et votre instance carbone.

Voici un exemple de sortie de bricoler -

>>> $now = \Carbon\Carbon::now();
=> Carbon\Carbon {#648
     +"date": "2017-11-01 16:41:04.000000",
     +"timezone_type": 3,
     +"timezone": "UTC",
   }
>>> $now->diffInSeconds();
=> 5
>>> $now->diffInSeconds();
=> 7
>>> $now->diffInSeconds();
=> 8
>>> $now->diffInSeconds();
=> 10
>>> $now->diffInSeconds() > 0
=> true
2
SagunKho

Consultez la section «Comparaison» sur docs carbone . Vous devez appeler $first->lte($second) pour comparer deux instances de carbone.

1
Ivan Kalita