web-dev-qa-db-fra.com

date php inférieure à une autre date

étant donné ce type d'objet de date date("m/d/Y", strtotime($numerical." ".$day." of ".date("F")))

où il peut donner un jour mm/jj/aaaa qui est le "premier lundi d'août", par exemple

comment puis-je décider si cette date est supérieure, inférieure ou égale à la date d'aujourd'hui?

J'ai besoin d'une méthode now() qui fonctionne dans ce format et qui peut être comparée entre les objets de date

Je n'ai pas encore essayé date () <date (). Mais je ne pense pas que cela fonctionnera

tout aperçu apprécié

9
CQM

Comparez les horodatages:

if (strtotime($numerical." ".$day." of ".date("F")) < time()) {
    // older
} else {
    // newer
}

Ceci est possible car strtotime() renvoie les secondes depuis le 1.1.1970 et time() aussi. Et en PHP vous pouvez facilement comparer les entiers ...

18
bwoebi

J'ai mal compris votre question au début. Vous n'utilisez pas un objet date dans la comparaison comme vous le dites, mais plutôt une représentation sous forme de chaîne d'une date (créée par date ).

Il est facile de comparer presque n'importe quelle représentation sous forme de chaîne d'une date à l'actuelle heure:

$now = time();
$date = '2015/03/12'; #could be (almost) any string date

if (strtotime($date) > $now) {
    #$date occurs in the future
} else {
    #$date occurs now or in the past
}

Comparer une chaîne de date à la chaîne jour actuelle n'est qu'un peu plus compliqué. Voici une façon de procéder:

$today_start = strtotime('today');
$today_end = strtotime('tomorrow');
$date = '2015/03/12'; #could be (almost) any string date

$date_timestamp = strtotime($date);

if ($date_timestamp >= $today_end) {
    #$date occurs after today
} elseif ($date_timestamp < $today_start) {
    #$date occurs before today
} else {
    #$date occurs today
}

Plutôt que d'utiliser time pour réduire l'heure actuelle à la seconde, vous calculez les horodatages des deux minuit qui marquent la date du jour. Ensuite, vous comparez avec ceux-ci.

Il existe des moyens plus intelligents de procéder (par exemple, en comparant le YYYY/MM/DD représentations de la date et d'aujourd'hui), mais cet exemple s'appuie bien sur le premier.

26
ell