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?
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 .
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';
}
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).
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é.
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;
}
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;
}