Nombre de jours entre deux date en une seule ligne

Soyez le premier à donner votre avis sur cette source.

Snippet vu 84 762 fois - Téléchargée 33 fois

Contenu du snippet

Petit code tres pratique pour ne pas se trop se creuser ou faire 30 lignes quand on doit calculer le nombre de jours entre deux dates.

Source / Exemple :


$nbjours = round((strtotime($date1) - strtotime($date2))/(60*60*24)-1);

Conclusion :


Voila ;-) c'est simple comme tout, ca devrait ptet pas faire une source juste pour ca mais j'ai envie donc... lol

A voir également

Ajouter un commentaire

Commentaires

devil1591
Messages postés
2
Date d'inscription
jeudi 4 décembre 2003
Statut
Membre
Dernière intervention
23 novembre 2007
-
Qui gèrera les....décalages d'heure d'hiver/été !
A+
FREMYCOMPANY
Messages postés
278
Date d'inscription
jeudi 12 janvier 2006
Statut
Membre
Dernière intervention
22 décembre 2008
-
Si les deux dates sont la même année, on peut faire :
date('z', $date1) - date('z', $date2);

Si les dates sont dans des années différentes, il faut alors utiliser une autre méthode, qui prennent en compte les années bisextiles et les non-bisexiles...
djfatcut
Messages postés
11
Date d'inscription
mardi 18 novembre 2008
Statut
Membre
Dernière intervention
4 juillet 2010
-
Je me suis inscrit juste pour te remercier Magidev

J'ai besoin de cette fonction, je m'apprêtais a y passer la nuit (voir plus). J'ai fait une petite recherche sur google histoire de trouvez quelques infos, et je tombe sur ton code. Je prend le code, je le rajoute sur ma page, je remplace $date1 et $date2 par les noms de mes variables je teste et op ca marche.

Autrement dit, au lieu d'y passer la nuit, ca m'a pris 5 minutes grace a toi. Reste plus qu'a faire un peu de maths.

Vraiment un gros gros MERCI Magidev et merci aussi a toutes les personnes qui ont poussé le sujet plus loin, je suis sur que ca me servira.
cs_Mik4do
Messages postés
2
Date d'inscription
samedi 19 juillet 2003
Statut
Membre
Dernière intervention
2 janvier 2010
-
Bonjour à tous et toutes,

J'ai pris un peu de temps pour décortiquer de quelle manière je pouvais trouver le nombre de 1/4 d'heure entre deux dates mais également entre des heures.. pour par exemple établir le début d'un travail à tel moment et le terminer à tel moment.

<?
function date_diff($datedebut,$datefin) /// format de vos dates date("Y-m-d H:i:s");
{
list($de,$td) = explode(' ', $datedebut); // Séparation date et heure début
list($df,$tf) = explode(' ',$datefin); // Séparation date et heure fin
$dd split("-",$de); $ddannee $dd[0]; $ddmois = $dd[1]; $ddjour = $dd[2]; /// date 1$hd split(":",$td); $hdheure $hd[0]; $hdmin = $hd[1]; $hdsec = $hd[2]; /// heure 1
$df split("-",$df); $dfannee $df[0]; $dfmois = $df[1]; $dfjour = $df[2]; /// date 2$hf split(":",$tf); $hfheure $hf[0]; $hfmin = $hf[1]; $hfsec = $hf[2]; /// heure 2

$time1=time() - mktime($hdheure, $hdmin, $hdsec, $ddmois, $ddjour, $ddannee);
/// difference de seconde entre 1-1-1970 et la date 1
$time2=time() - mktime($hfheure, $hfmin, $hfsec, $dfmois, $dfjour, $dfannee);
/// difference de seconde entre 1-1-1970 et la date 2

$tsecs = ceil(($time1-$time2)/60/15); /// time1 - time2 donne le nombre en secondes
/// pour avoir les minutes on divise par 60
/// ensuite divise par 15 pour voir le nombre de 1/4 d'heure
/// et j'arrondis le tout au dessus car le quart d'heure
/// débuté est automatiquement facturé

$texte=$tsecs;
return $texte;
}
?>

Pour utiliser la fonction :
<?
$quantiteminutes=date_diff("2010-09-22 15:30:00","2010-09-22 16:16:00");
echo $quantiteminutes; /// affichage du nombre : 4 soit 4 1/4 d'heure entamés
?>

Dites moi si il y a plus simple, mais en cherchant, je n'ai pas trouvé ce genre de fonction :-)

Bon amusement,
Mikado
Course-folle.com
Adri74100
Messages postés
1
Date d'inscription
vendredi 5 décembre 2008
Statut
Membre
Dernière intervention
28 avril 2012
-
Commentaire à devil1591:
Si on fait la différence entre deux dates éloignées, le while fera plusieurs centaines voir milliers d'appels aux fonctions date et strtotime... Voici une méthode plus rapide, qui gère bien les années bissextiles et les décalages horaires:

function nb_jours($sDate1, $sDate2){
$iNbJours = date('z', strtotime($sDate2)) - date('z', strtotime($sDate1));
$iNbAnnees = date('Y', strtotime($sDate2)) - date('Y', strtotime($sDate1));
for ($i = 0; $i < $iNbAnnees; $i++){
$iNbJours += date("z", mktime(0, 0, 0, 12, 31, date('Y', strtotime($sDate1)) + $i)) + 1;
}
return $iNbJours;
}
Commenter la réponse de cs_webdusud

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.