Comment puis-je comparer deux dates en PHP?
La date est stockée dans la base de données au format suivant
2011-10-2
Si je voulais comparer la date du jour à la date de la base de données pour voir laquelle est la plus grande, comment le ferais-je?
J'ai essayé ça,
$today = date("Y-m-d");
$expire = $row->expireDate //from db
if($today < $expireDate) { //do something; }
mais cela ne fonctionne pas vraiment de cette façon. Quelle est une autre façon de le faire?
Réponses:
Stockez-le dans AAAA-MM-JJ et la comparaison de chaînes fonctionnera car '1'> '0', etc.
la source
2016-03-27 11:59:47 ::: 2016-03-14 10:30:00
t-il?Si toutes vos dates sont postérieures au 1er janvier 1970, vous pouvez utiliser quelque chose comme:
Si vous utilisez PHP 5> = 5.2.0, vous pouvez utiliser la classe DateTime:
Ou quelque chose du genre.
la source
1st of January of 1970
ne concerne que les anciennes versions de PHP fonctionnant sous Windows et cela n'a jamais été un problème sous Unix.strtotime
retournera false pour les dates plus grandes. stackoverflow.com/questions/2012589/…DateTime
méthode est la méthode préférée. Cet objet peut faire bien plus questrtotime
jamais.new DateTime('now')
fonctionne également pour récupérer la date d'aujourd'huiJuste pour compléter les réponses déjà données, voyez l'exemple suivant:
Mise à jour: Ou utilisez simplement la fonction date () old-school :
la source
Je ne ferais pas ça avec PHP. Une base de données doit savoir quel jour est aujourd'hui (utilisez MySQL-> NOW () par exemple), il sera donc très facile de comparer dans la requête et de renvoyer le résultat, sans aucun problème en fonction des types de date utilisés
la source
la source
Voici un moyen d'obtenir la différence entre deux dates en quelques minutes.
la source
Vous pouvez convertir les dates en horodatages UNIX et comparer la différence entre eux en secondes.
la source
J'ai eu ce problème aussi et je le résolve en:
la source
Voici mon tour sur la façon d'obtenir la différence en jours entre deux dates avec PHP. Notez l'utilisation de '!' au format pour supprimer la partie horaire des dates, grâce aux informations de DateTime createFromFormat sans heure .
la source
J'ai trouvé la réponse sur un blog et c'est aussi simple que:
Et vous aurez les jours entre les 2 dates.
la source
Cela fonctionne grâce à la logique de comparaison de chaînes de PHP. Vous pouvez simplement vérifier ...
Les deux dates doivent être dans le même format. Les chiffres doivent être remplis de zéro vers la gauche et classés du plus significatif au moins significatif.
Y-m-d
etY-m-d H:i:s
remplissez ces conditions.la source
d-m-Y
ne fonctionnera pas ..Y-m-d
(avec un zéro non significatif comme le 08/05/2016) fonctionnera. Vérifiez ces dates aud-m-Y
format01-10-2016
et20-02-2016
, en comparant comme des chaînes 0 <2, il arrêtera de comparer mais de manière incorrecte ...2011-10-2
.Si vous voulez qu'une date ($ date) expire dans un certain intervalle, par exemple une date d'expiration de jeton lors d'une réinitialisation de mot de passe, voici comment procéder:
Mais dans votre cas, vous pouvez faire la comparaison comme suit:
la source
requestDate()
méthode magique - il n'est mentionné nulle part. Je n'utiliserais pas votre réponse et je ne recommanderais à aucun chercheur d'utiliser votre solution. Je ne prévois pas changer mon vote.tout d'abord, essayez de donner le format que vous souhaitez à la date et l'heure actuelle de votre serveur:
Obtenir la date et l'heure actuelle
$ date_actuelle = getdate ();
Séparez la date et l'heure pour les gérer comme vous le souhaitez:
$ current_date_only = $ current_date [year] .'- '. $ current_date [lun] .'-'. $ current_date [mday]; $ current_time_only = $ current_date ['hours']. ':'. $ current_date ['minutes']. ':'. $ current_date ['seconds'];
Comparez-le selon si vous utilisez donly date ou datetime dans votre base de données:
$ today = $ current_date_only. ' '. $ heure_actuelle_unique;
ou
$ today = $ current_date_only;
if ($ aujourd'hui <$ expireDate)
J'espère que ça aide
la source