Étant donné une certaine date, quel est le moyen le plus simple pour déterminer combien de jours jusqu'à cette date (en PHP)? J'essaye de construire un widget de compte à rebours, merci!Combien de jours avant la date X-Y-Z?
Répondre
<?php
$cdate = mktime(0, 0, 0, 12, 31, 2009, 0);
$today = time();
$difference = $cdate - $today;
if ($difference < 0) { $difference = 0; }
echo "There are ". floor($difference/60/60/24)." days remaining";
?>
Ne pas traiter les dates comme des nombres entiers. Utilisez votre base de données, qui a un bon support pour traiter les calendriers/temps.
select datediff("2009-11-12", now())
horodatage unix FTW – andufo
PHP 5.3 a introduit la classe DateTime qui implémente une fonction 'diff'. Voir http://www.php.net/manual/en/datetime.diff.php
L'expansion sur la réponse de schnaader, voici une fonction d'une doublure qui prend une chaîne de date comme paramètre mais renvoie le nombre de jours:
<?php
function days_until($date){
return (isset($date)) ? floor((strtotime($date) - time())/60/60/24) : FALSE;
}
?>
Jours format minutes et secondes:
// current time
$today = new DateTime(format_date(time(), 'custom', 'd M Y H:i:s'));
// date to which we want to compare (A Drupal field in my case).
$appt = new DateTime(format_date($yourdate_is_timestamp, 'custom', 'd M Y H:i:s'));
// Months
$months_until_appt = $appt->diff($today)-> m;
// days
$days_until_appt = $appt->diff($today)-> days;
// hours
$hours_until_appt = $appt->diff($today)-> h;
// minutes
$minutes_until_appt = $appt->diff($today)-> i;
// seconds
$seconds_until_appt = $appt->diff($today)-> s;
echo 'days until: ' . $days_until_appt;
echo 'hours until: ' . $hours_until_appt;
echo 'minutes until: ' . $minutes_until_appt;
echo 'seconds until: ' . $seconds_until_appt;
'DateTime' class FTW –
Selon http://php.net/manual/en/ref.datetime.php' -> days' (par exemple) n'est pas une classe valide méthode. Pouvez-vous s'il vous plaît modifier votre code pour utiliser '-> format ('d')', '-> format ('m')', etc, donc c'est plus clair pour ceux qui visitent? – Wes
Pour l'enregistrement - J'ai mis à jour pour l'utilisation de 'DateTime' - ne peux pas croire la réponse acceptée en utilisant' DateTime' dans la solution. – Wes
Je viens de rencontrer cela dans mon code pour une application en direct où le système considéré incorrectement aujourd'hui et demain comme aujourd'hui. Nous venons d'entrer dans British Summer Time et cela a causé un problème avec notre application.
J'utilise maintenant ce qui suit, ce qui me donne le résultat correct:
function days_away_to($dt) {
$mkt_diff = strtotime($dt) - time();
return floor($mkt_diff/60/60/24) + 1; # 0 = today, -1 = yesterday, 1 = tomorrow
}
Bien sûr, en utilisant la classe DateTime est la meilleure solution va de l'avant ...
C'est exactement le même code que [a déjà été posté ici] (http://stackoverflow.com/a/8807610/447356) et vous venez de changer les noms des variables. -1 pour essayer d'obtenir un représentant pour le travail des autres et de perdre notre temps. –
Merci SW mais malheureusement cette solution n'a pas fonctionné pour moi: elle me donne 0 pour 2014-03-31 en me disant que c'est la date pour aujourd'hui (c'est le 30 mars maintenant au Royaume-Uni).J'ai ajouté +1, ce qui le corrige pour moi. –
Donc, vous devriez le mettre en évidence dans votre message en liant à cette autre réponse et en expliquant que vous venez d'ajouter 1 pour le faire fonctionner. S'il vous plaît faites le montage et faites le moi savoir. –
- 1. Démarrer le workflow Sharepoint "x" jours avant la date d'expiration
- 2. iPhone: Combien de jours Apple examine-t-il une application?
- 3. Ajouter 30 jours pour la date en db
- 4. PHP Si la date est> 13 jours
- 5. T-sql Lundi avant la date
- 6. CMD: Combien de gauche
- 7. Combien de jours ont eu lieu au cours d'une Timespan Compte tenu
- 8. Calcul d'une date autour des jours ouvrables/heures?
- 9. MySQL obtient la date il y a n jours comme date et heure
- 10. .NET Date Comparer: Compter le nombre de jours ouvrables depuis une date?
- 11. Dans jquery ui sélecteur de date comment autoriser la sélection de certains jours de la semaine et désactiver les autres jours de la semaine
- 12. Comment puis-je trouver une date antérieure de trois jours à une date donnée en Perl?
- 13. avertissement: déclaration implicite de la j'intégrée dans la fonction « xyz »
- 14. Pourquoi mon script Falcon imprime-t-il la date un mois avant la date d'aujourd'hui?
- 15. Dans Visual Studio 2008 - combien de temps avant la modification de "web.config"?
- 16. Comment utiliser la date de valeur calculée dans le champ des listes Sharepoint pour trouver une date + 30 jours?
- 17. Zend_Controller_Router_Exception: "xyz" n'est pas spécifié
- 18. comment savoir si une date est 1 an avant la date d'aujourd'hui dans java
- 19. MySQL: combien d'entrys pour chaque identifiant à chaque date?
- 20. Comment calculer une date de retour d'une autre date avec un nombre donné de jours de travail
- 21. Comment créer un format de date convivial (par exemple "soumis 2 jours")
- 22. CMD/BAT - Aide pour déterminer la date il ya 36 jours
- 23. SQLite: Date de besoin> = (x) nombre de jours à partir de aujourd'hui
- 24. Sélectionnez les plus vues De la dernière 7 jours
- 25. Calculer après X jours
- 26. Rails: Combien est la destruction modèle automatisé
- 27. Comment compter le nombre de jours?
- 28. Comment comparer une date de mysql avec la date actuelle et envoyer une notification email
- 29. Comment obtenir un enregistrement avant la date de début et de fin
- 30. PHP Date Question
Nous vous remercions de ce! Résolu mon problème :) – yanike
Cela dépend vraiment de votre définition "jours avant". Par exemple, cet extrait me dit que la nouvelle année est à 34 jours, et wolfram alpha, google, siri, et à peu près tous les autres sites que je recherche me dit 35 jours. FWIW – AlBeebe
@AlBeebe alors juste ajouter +1. Qu'est-ce qui est si difficile à ce sujet? – Devfly