web-dev-qa-db-fra.com

Comment puis-je vérifier si la date / heure actuelle est postérieure à une date / heure définie?

J'essaie d'écrire un script qui vérifiera si la date/heure actuelle est passée (e) 05/15/2010 at 4PM

Comment utiliser la fonction date () de PHP pour effectuer cette vérification?

105
dave

Depuis PHP> = 5.2.0, vous pouvez utiliser la classe DateTime en tant que telle:

if (new DateTime() > new DateTime("2010-05-15 16:00:00")) {
    # current time is greater than 2010-05-15 16:00:00
    # in other words, 2010-05-15 16:00:00 has passed
}

La chaîne transmise au constructeur DateTime est analysée conformément à ces règles .


Notez qu'il est également possible d'utiliser les fonctions time et strtotime. Voir la réponse originale .

207
Salman A

Il existe également la classe DateTime qui implémente une fonction pour les opérateurs de comparaison.

// $now = new DateTime();
$dtA = new DateTime('05/14/2010 3:00PM');
$dtB = new DateTime('05/14/2010 4:00PM');

if ( $dtA > $dtB ) {
  echo 'dtA > dtB';
}
else {
  echo 'dtA <= dtB';
}
77
VolkerK

La plage d'objets dateTime va d'environ 292 milliards d'années dans le passé à la même dans l'avenir. La fonction d'horodatage a une limite (commence de 1970 à 2038 si je me souviens bien).

7
Ivar Koster

Vérifiez la fonction strtotime- de PHP pour convertir votre date/heure en un horodatage: http://php.net/manual/en/function.strtotime.php

Si strtotime ne peut pas gérer correctement le format de date/heure ("16h00" fonctionnera probablement, mais pas "à 16h00"), vous devrez utiliser des fonctions de chaîne, par exemple. substr pour analyser/corriger votre format et récupérer votre horodatage via une autre fonction, par exemple. mktime.

Ensuite, comparez l'horodatage résultant avec la date/heure actuelle (if ($calulated_timestamp > time()) { /* date in the future */ }) pour voir si la date/heure définie est passée ou future.

Je suggère de lire la documentation PHP sur les fonctions date/heure et de revenir ici avec une partie de votre code source une fois que vous êtes bloqué.

6
Select0r

J'ai eu un problème avec cette date en comparant et j'ai besoin d'ajuster

function getDatetimeNow() {
  $tz_object = new DateTimeZone('Europe/Belgrade');
  $datetime = new DateTime();
  $datetime->setTimezone($tz_object);
  return $datetime->format('Y\-m\-d\ h:i:s');
}

$currentDate = getDatetimeNow();

$dtA = new DateTime($currentDate);
$dtB = new DateTime($date);

if ( $dtA > $dtB ) {
  $active = 0;
  return $active;
}
else {
  $active = 1;
  return $active;
}
1
Miomir Dancevic
date_default_timezone_set('Asia/Kolkata');

$curDateTime = date("Y-m-d H:i:s");
$myDate = date("Y-m-d H:i:s", strtotime("2018-06-26 16:15:33"));
if($myDate < $curDateTime){
    echo "active";exit;
}else{
    echo "inactive";exit;
}
0