Calcul de date
Résolu/Fermé
JBA
-
18 juin 2008 à 18:00
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 - 20 juin 2008 à 14:33
JB_A Messages postés 301 Date d'inscription jeudi 19 juin 2008 Statut Membre Dernière intervention 13 février 2018 - 20 juin 2008 à 14:33
A voir également:
- Calcul de date
- Calcul moyenne excel - Guide
- Calcul charpente bois gratuit - Télécharger - Architecture & Déco
- Logiciel gratuit calcul valeur nutritionnelle - Télécharger - Santé & Bien-être
- Airpods 3 date de sortie - Guide
- Logiciel calcul surface terrain gratuit - Télécharger - Outils professionnels
8 réponses
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
89
18 juin 2008 à 18:32
18 juin 2008 à 18:32
J'ai essayé également d'utiliser le format mktime mais
1) je ne sais pas comment le retransformé par la suite
2) le format d'une date anterieur à la date du jour renvoi un chiffre supérieur à la date du jour donc renvoie un chiffre négatif.
Bonjour.
mktime donne en sortie des secondes.
Il suffit donc de faire :
//3600 sec dans une heure, et 24 heures par jour.
// Je te laisse décomposer les dates pour récupérer h,min,sec jj, mm, aaaa ...
// Pour le cas où $datedepot > $datejour, on utilise abs()
$difference = abs(mktime($datejour) - mktime($datedepot)) * 3600 * 24;
1) je ne sais pas comment le retransformé par la suite
2) le format d'une date anterieur à la date du jour renvoi un chiffre supérieur à la date du jour donc renvoie un chiffre négatif.
Bonjour.
mktime donne en sortie des secondes.
Il suffit donc de faire :
//3600 sec dans une heure, et 24 heures par jour.
// Je te laisse décomposer les dates pour récupérer h,min,sec jj, mm, aaaa ...
// Pour le cas où $datedepot > $datejour, on utilise abs()
$difference = abs(mktime($datejour) - mktime($datedepot)) * 3600 * 24;
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
89
18 juin 2008 à 19:28
18 juin 2008 à 19:28
// Je te laisse décomposer les dates pour récupérer h,min,sec jj, mm, aaaa ...
Extrait de la doc php :
Tu ne passes pas les bons paramètres à mktime...
Il faut décomposer tes dates en $heure, $minutes, $secondes, $jour,$mois, $annee
Extrait de la doc php :
Description int mktime(int hour ,int minute ,int second ,int month ,int day ,int year ,[int is_dst ]) ATTENTION : l'ordre des arguments est différent de celui de la commande UNIX habituelle mktime(), et fournit des résultats aléatoires si on oublie cet ordre. C'est une erreur très commune que de se tromper de sens.
Tu ne passes pas les bons paramètres à mktime...
Il faut décomposer tes dates en $heure, $minutes, $secondes, $jour,$mois, $annee
Re-bonjour,
Cette fois, les résultats différent bien en fonction de la date mais la traduction en jours, heures, minutes ne se fait toujours pas.
De plus, pour des minutes assez proches (dans la même heure), le résultat n'évolue pas
19,41,23,18,06,2008($datejour) || 00,00,00,29,05,2008($datedepot) || 5909760000($difference)
19,41,23,18,06,2008($datejour) || 14,24,23,18,06,2008($datedepot) || 1555200000($difference)
19,41,23,18,06,2008($datejour) || 14,53,32,18,06,2008($datedepot) || 1555200000($difference)
...
Merci pour ton aide.
Cette fois, les résultats différent bien en fonction de la date mais la traduction en jours, heures, minutes ne se fait toujours pas.
De plus, pour des minutes assez proches (dans la même heure), le résultat n'évolue pas
19,41,23,18,06,2008($datejour) || 00,00,00,29,05,2008($datedepot) || 5909760000($difference)
19,41,23,18,06,2008($datejour) || 14,24,23,18,06,2008($datedepot) || 1555200000($difference)
19,41,23,18,06,2008($datejour) || 14,53,32,18,06,2008($datedepot) || 1555200000($difference)
...
Merci pour ton aide.
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
89
>
JBA
19 juin 2008 à 13:06
19 juin 2008 à 13:06
Tu peux mettre ton code ?
Mike-31
Messages postés
18357
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
6 février 2025
5 113
18 juin 2008 à 21:36
18 juin 2008 à 21:36
Salut,
Récupére sur ce lien un exemple tout simple qui détermine les jours, heures, minutes et secondes
https://www.cjoint.com/?gsvIzdbGyg
A+
Récupére sur ce lien un exemple tout simple qui détermine les jours, heures, minutes et secondes
https://www.cjoint.com/?gsvIzdbGyg
A+
Mike-31
Messages postés
18357
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
6 février 2025
5 113
19 juin 2008 à 08:43
19 juin 2008 à 08:43
Ce lien est la merveille du forum et sert à échanger des exemples.
Tu cliques sur le lien qui va t'orienter vers un fichier joint que tu télécharges, dans ce cas je t'ai envoyé un fichier heures.xls
De même que tu peux nous envoyer un dossier qui te pose problème ce qui simplifi la compréention.
Garde sous le coude ce lien pour d'autres problèmes éventuels
https://www.cjoint.com/
A+
Tu cliques sur le lien qui va t'orienter vers un fichier joint que tu télécharges, dans ce cas je t'ai envoyé un fichier heures.xls
De même que tu peux nous envoyer un dossier qui te pose problème ce qui simplifi la compréention.
Garde sous le coude ce lien pour d'autres problèmes éventuels
https://www.cjoint.com/
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
89
19 juin 2008 à 13:21
19 juin 2008 à 13:21
J'ai regardé un peu...
A priori le champ de ta table est au format DATE.
Ca te sort quoi ? Un nombre, ou une date (genre "2008-06-18 14:24:23") ?
Suivant les cas, il faudra convertir ta chaîne...
A priori le champ de ta table est au format DATE.
$datedepot=$row[3]; echo $datedepot;
Ca te sort quoi ? Un nombre, ou une date (genre "2008-06-18 14:24:23") ?
Suivant les cas, il faudra convertir ta chaîne...
$datedepot=$row[3]; // Si on récupère une chaîne formatée / on la convertit. Sinon il n'y a pas besoin de la ligne qui suit. $datedepot = strtotime($datedepot); // On récupère le timestamp du moment $datejour = strtotime("now"); // $diff contient la différence entre les deux dates, en secondes. $diff = abs($datejour - $datedepot);
Bonjour et merci de vos réponses,
Désolé si j'ai été long à répondre mais j'avais un problème ADSL qui vient d'être résolu.
Je récapitule :
$datejour=date("H,i,s,m,d,Y");
$datej=mktime($datejour);
$datedepot=substr($row[3],11,2).",".substr($row[3],14,2).",".substr($row[3],17,2).",".substr($row[3],5,2).",".substr($row[3],8,2).",".substr($row[3],0,4);
$datedept=mktime($datedepot);
$dif=abs($datej-$datedept);
Mon problème est le suivant, il me semblait que mktime retourné le nombre de secondes qui sépare la date traduite du 1/1/1970 à 00:00:00.
Hors voici les résultats que j'obtiens :
15,52,25,06,19,2008 (datejour)// 00,00,00,05,29,2008 (datedepot)
1213883545 (datej : mktime) // 1213829545 (datedept : mktime) = 54000 (diff)
15,52,25,06,19,2008 (datejour)// 14,24,23,06,18,2008 (datedepot)
1213883545 (datej : mktime) // 1213879945 (datedept : mktime) = 3600 (diff)
15,52,25,06,19,2008 (datejour)// 14,27,20,06,18,2008 (datedepot)
1213883545 (datej : mktime) // 1213879945 (datedept : mktime) = 3600 (diff)
15,52,25,06,19,2008 (datejour)// 14,53,32,06,18,2008 (datedepot)
1213883545 (datej : mktime) // 1213879945 (datedept : mktime) = 3600 (diff)
...
Comme vous pouvez le voir la date de dépôt varie au niveau de la date et/ou au niveau de l'heure.
Néanmoins, le nombre de secondes (datedept avec mktime) ne varie pas. Je ne peux donc pas le retraduire en nombre de jours, minutes (et éventuellement de secondes).
Merci pour votre aide
Désolé si j'ai été long à répondre mais j'avais un problème ADSL qui vient d'être résolu.
Je récapitule :
$datejour=date("H,i,s,m,d,Y");
$datej=mktime($datejour);
$datedepot=substr($row[3],11,2).",".substr($row[3],14,2).",".substr($row[3],17,2).",".substr($row[3],5,2).",".substr($row[3],8,2).",".substr($row[3],0,4);
$datedept=mktime($datedepot);
$dif=abs($datej-$datedept);
Mon problème est le suivant, il me semblait que mktime retourné le nombre de secondes qui sépare la date traduite du 1/1/1970 à 00:00:00.
Hors voici les résultats que j'obtiens :
15,52,25,06,19,2008 (datejour)// 00,00,00,05,29,2008 (datedepot)
1213883545 (datej : mktime) // 1213829545 (datedept : mktime) = 54000 (diff)
15,52,25,06,19,2008 (datejour)// 14,24,23,06,18,2008 (datedepot)
1213883545 (datej : mktime) // 1213879945 (datedept : mktime) = 3600 (diff)
15,52,25,06,19,2008 (datejour)// 14,27,20,06,18,2008 (datedepot)
1213883545 (datej : mktime) // 1213879945 (datedept : mktime) = 3600 (diff)
15,52,25,06,19,2008 (datejour)// 14,53,32,06,18,2008 (datedepot)
1213883545 (datej : mktime) // 1213879945 (datedept : mktime) = 3600 (diff)
...
Comme vous pouvez le voir la date de dépôt varie au niveau de la date et/ou au niveau de l'heure.
Néanmoins, le nombre de secondes (datedept avec mktime) ne varie pas. Je ne peux donc pas le retraduire en nombre de jours, minutes (et éventuellement de secondes).
Merci pour votre aide
macgawel
Messages postés
664
Date d'inscription
mercredi 7 mai 2008
Statut
Membre
Dernière intervention
1 novembre 2008
89
19 juin 2008 à 16:23
19 juin 2008 à 16:23
Rappel :
Extrait de la doc php :
Description
int mktime(int hour ,int minute ,int second ,int month ,int day ,int year ,[int is_dst ])
ATTENTION : l'ordre des arguments est différent de celui de la commande UNIX habituelle mktime(), et fournit des résultats aléatoires si on oublie cet ordre. C'est une erreur très commune que de se tromper de sens.
Tu ne passes pas les bons paramètres à mktime...
Il faut décomposer tes dates en $heure, $minutes, $secondes, $jour,$mois, $annee
Ton mktime, tu lui donnes en paramêtre une chaîne de caractères. C'est déjà beau que ça ne plante pas (en fait c'est le problème de php, qui fait un transtypage automatique...)
Après examen, ton $datedept=mktime($datedepot); est foireux :
me retourne "19/06/2008 00:17:43".
Tu as regardéce message ?
Extrait de la doc php :
Description
int mktime(int hour ,int minute ,int second ,int month ,int day ,int year ,[int is_dst ])
ATTENTION : l'ordre des arguments est différent de celui de la commande UNIX habituelle mktime(), et fournit des résultats aléatoires si on oublie cet ordre. C'est une erreur très commune que de se tromper de sens.
Tu ne passes pas les bons paramètres à mktime...
Il faut décomposer tes dates en $heure, $minutes, $secondes, $jour,$mois, $annee
Ton mktime, tu lui donnes en paramêtre une chaîne de caractères. C'est déjà beau que ça ne plante pas (en fait c'est le problème de php, qui fait un transtypage automatique...)
Après examen, ton $datedept=mktime($datedepot); est foireux :
$datedepot="00,00,00,05,29,2008"; $datedept=mktime($datedepot); $tab_date = date("d/m/Y H:i:s", $datedept); echo 'Datedept 1 : '.$datedept.'<br />'.'ToDate = '.$tab_date;
me retourne "19/06/2008 00:17:43".
Tu as regardéce message ?
JB_A
Messages postés
301
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
13 février 2018
5
19 juin 2008 à 17:19
19 juin 2008 à 17:19
Re-bonjour,
Merci pour ton aide. Je viens de trouver une solution en décomposant les dates (Ci-dessous). Seul problème, j'ai un message d'erreur dans le cas d'une date avec heure à 00:00:00 parce que le mktime(00,00,00,1,1,1970) me renvoie -1 au lieu de 0.
---------------------------------------------------------------------------
Code :
$hf=date("H");//heure en cours
$mif=date("i");//minute en cours
$sf=date("s"); //seconde en cours
$jf=date("d");//aujourd'hui
$mf=date("m");//mois en cours
$af=date("Y");//année en cours
$hd=substr($row[3],11,2);//heure de dépôt
$mid=substr($row[3],14,2);//minute de dépôt
$sd=substr($row[3],17,2);//seconde de dépôt
$jd=substr($row[3],8,2);//jour de dépôt
$md=substr($row[3],5,2);//mois de dépôt
$ad=substr($row[3],0,4);//année de dépôt
// Traitement date de dépôt
$pd = mktime(0,0,0,$md,$jd,$ad);
// Traitement date en cours
$pf = mktime(0,0,0,$mf,$jf,$af);
//Structurations heures minutes et secondes
$tsd = mktime ($hd, $mid, $sd, 1, 1, 1970);
$tsf = mktime ($hf, $mif, $sf, 1, 1, 1970);
$ts = abs($tsf - $tsd);
// Extraction des valeurs attendues du Timestamp $ts
$nbj=abs($pf - $pd)/86400; // Nombre de jours écoulés
$nbh = floor($ts/3600); // Nombre d'heures écoulées
$ts = $ts - ($nbh*3600); // Soustrations du nombre de secondes définissables comme heure du total de secondes existant
$nbm = $ts/60; //Division de ce nombre de secondes par 60 pour en extraire celles définissables comme minute= Nombre de minutes écoulées
$nbm=floor($nbm); // Extraction Partie entière de la valeur nombre de minutes
$nbs=$ts-($nbm*60); //Soustrations du nombre de secondes définissables comme minutes du total de secondes restant : Le reste = nombre de secondes
------------------------------------------------
Pour afficher le résultat :
<? if ($nbj>"0") {?><? echo $nbj ?> jour<? if ($nbj>"1") {?>s<? } ?><? } ?><? if ($nbh>"0") {?> <? echo $nbh ?> heure<? if ($nbh>"1") {?>s<? } ?><? } ?><? if ($nbm>"0") {?> <? echo $nbm ?> minute<? if ($nbm>"1") {?>s<? } ?><? } ?>
--------------------------------------------------------
Résultats retournés :
21 jours 16 heures 9 minutes
1 jour 2 heures 44 minutes
1 jour 2 heures 41 minutes
1 jour 2 heures 15 minutes
...
On avance, c'est presque fini, il ne me reste plus que le message (à cause du -1) :
Warning: mktime(): Windows does not support negative values for this function in c:\web\www\it\support\incident\liste.php on line 199
Merci de votre patience et de votre aide
Merci pour ton aide. Je viens de trouver une solution en décomposant les dates (Ci-dessous). Seul problème, j'ai un message d'erreur dans le cas d'une date avec heure à 00:00:00 parce que le mktime(00,00,00,1,1,1970) me renvoie -1 au lieu de 0.
---------------------------------------------------------------------------
Code :
$hf=date("H");//heure en cours
$mif=date("i");//minute en cours
$sf=date("s"); //seconde en cours
$jf=date("d");//aujourd'hui
$mf=date("m");//mois en cours
$af=date("Y");//année en cours
$hd=substr($row[3],11,2);//heure de dépôt
$mid=substr($row[3],14,2);//minute de dépôt
$sd=substr($row[3],17,2);//seconde de dépôt
$jd=substr($row[3],8,2);//jour de dépôt
$md=substr($row[3],5,2);//mois de dépôt
$ad=substr($row[3],0,4);//année de dépôt
// Traitement date de dépôt
$pd = mktime(0,0,0,$md,$jd,$ad);
// Traitement date en cours
$pf = mktime(0,0,0,$mf,$jf,$af);
//Structurations heures minutes et secondes
$tsd = mktime ($hd, $mid, $sd, 1, 1, 1970);
$tsf = mktime ($hf, $mif, $sf, 1, 1, 1970);
$ts = abs($tsf - $tsd);
// Extraction des valeurs attendues du Timestamp $ts
$nbj=abs($pf - $pd)/86400; // Nombre de jours écoulés
$nbh = floor($ts/3600); // Nombre d'heures écoulées
$ts = $ts - ($nbh*3600); // Soustrations du nombre de secondes définissables comme heure du total de secondes existant
$nbm = $ts/60; //Division de ce nombre de secondes par 60 pour en extraire celles définissables comme minute= Nombre de minutes écoulées
$nbm=floor($nbm); // Extraction Partie entière de la valeur nombre de minutes
$nbs=$ts-($nbm*60); //Soustrations du nombre de secondes définissables comme minutes du total de secondes restant : Le reste = nombre de secondes
------------------------------------------------
Pour afficher le résultat :
<? if ($nbj>"0") {?><? echo $nbj ?> jour<? if ($nbj>"1") {?>s<? } ?><? } ?><? if ($nbh>"0") {?> <? echo $nbh ?> heure<? if ($nbh>"1") {?>s<? } ?><? } ?><? if ($nbm>"0") {?> <? echo $nbm ?> minute<? if ($nbm>"1") {?>s<? } ?><? } ?>
--------------------------------------------------------
Résultats retournés :
21 jours 16 heures 9 minutes
1 jour 2 heures 44 minutes
1 jour 2 heures 41 minutes
1 jour 2 heures 15 minutes
...
On avance, c'est presque fini, il ne me reste plus que le message (à cause du -1) :
Warning: mktime(): Windows does not support negative values for this function in c:\web\www\it\support\incident\liste.php on line 199
Merci de votre patience et de votre aide
JB_A
Messages postés
301
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
13 février 2018
5
>
JB_A
Messages postés
301
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
13 février 2018
19 juin 2008 à 17:58
19 juin 2008 à 17:58
La solution est de rajouter :
------------------------------------------------
if (($hf=="00") && ($mif=="00") && ($sf=="00")) {
$hf="1";
}
if (($hd=="00") && ($mid=="00") && ($sd=="00")) {
$hd="1";
}
--------------------------------------------------
Cela n'a pas l'air d'avoir d'impact sur le résultat final.
Merci à tous, et particulièrement à macgawel, pour votre aide.
------------------------------------------------
if (($hf=="00") && ($mif=="00") && ($sf=="00")) {
$hf="1";
}
if (($hd=="00") && ($mid=="00") && ($sd=="00")) {
$hd="1";
}
--------------------------------------------------
Cela n'a pas l'air d'avoir d'impact sur le résultat final.
Merci à tous, et particulièrement à macgawel, pour votre aide.
JB_A
Messages postés
301
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
13 février 2018
5
20 juin 2008 à 14:33
20 juin 2008 à 14:33
Ca y est tous les problèmes sont résolus.
Pour éviter la marge d'erreur de 1 heures, le script a été modifié
Je résume :
Effectuer la différence entre 2 dates ainsi que les heures (dans mon cas, la date/heure de dépôt d'un dossier et la date/heure du jour)
$row[3] correspond au résultat SQL d'une colonne de date (format MYSQL : DATE --> 0000-00-00 00:00:00)
-------------------------------------------------------------------------------
Script :
$hf=date("H");//heure de fin (dans mon cas, heure du jour)
$mif=date("i");//minute de fin (dans mon cas, minute du jour)
$sf=date("s"); //seconde de fin (dans mon cas, seconde du jour)
$jf=date("d");//jour de fin (dans mon cas, aujourd'hui)
$mf=date("m");//mois de fin (dans mon cas, mois en cours)
$af=date("Y");//année de fin (dans mon cas, année en cours)
$hd=substr($row[3],11,2);//heure de début (dans mon cas, heure de dépôt)
$mid=substr($row[3],14,2);//minute de début (dans mon cas, minute de dépôt)
$sd=substr($row[3],17,2);//seconde de début (dans mon cas, seconde de dépôt)
$jd=substr($row[3],8,2);//jour de début (dans mon cas, jour de dépôt)
$md=substr($row[3],5,2);//mois de début (dans mon cas, mois de dépôt)
$ad=substr($row[3],0,4);//année de début (dans mon cas, annee de dépôt)
// Traitement date et heure en cours
$pf = mktime($hf,$mif,$sf,$mf,$jf,$af);
// Traitement date et heure de dépôt
$pd = mktime($hd,$mid,$sd,$md,$jd,$ad);
// Différence entre les 2 dates
$ts=abs($pf-$pd);
//Transformation en nombre de jours
$nbj=floor($ts/86400); // Nombre de jours écoulés
$tp=$nbj*86400; // nombre de jours retransformés en secondes
//Transformation en nombre d'heures
$nbh=$ts - $tp; // nombre de seconde total - nombre de jours écoulés
$nbh = floor($nbh/3600); // Nombre d'heures écoulées
$td=$nbh*3600; // nombre d'heures retransformés en secondes
// transformation en nombre de minutes
$nbm=$ts-($tp+$td); // nombre de seconde total - nombre de jours écoulés + nombre d'heures écoulées
$nbm=floor($nbm/60); // nombre de minutes écoulées
$tf=$nbm*60; // nombre de minutes retransformés en secondes
// transformation en nombre de secondes
$nbs=$ts-($tp+$td+$tf); // nombre de seconde total - nombre de jours écoulés + nombre d'heures écoulées + nombre de minutes écoulées
$nbs=floor($nbs); // nombre de secondes écoulées
-------------------------------------------------------------------------------
Code d'affichage dans la page
<? if ($nbj>"0") {?><? echo $nbj ?> jour<? if ($nbj>"1") {?>s<? } ?><? } ?><? if ($nbh>"0") {?> <? echo $nbh ?> heure<? if ($nbh>"1") {?>s<? } ?><? } ?><? if ($nbm>"0") {?> <? echo $nbm ?> minute<? if ($nbm>"1") {?>s<? } ?><? } ?><? if ($nbs>"0") {?> <? echo $nbs ?> seconde<? if ($nbs>"1") {?>s<? } ?>
-------------------------------------------------------------------------------
Exemple de résultats affichés
22 jours 14 heures 14 minutes 51 secondes
1 jour 23 heures 47 minutes 31 secondes
1 jour 23 heures 43 minutes
4 heures 54 minutes 35 secondes
...
Voila, je pense que tout est terminé.
Bon courage à tous et merci pour votre aide.
Pour éviter la marge d'erreur de 1 heures, le script a été modifié
Je résume :
Effectuer la différence entre 2 dates ainsi que les heures (dans mon cas, la date/heure de dépôt d'un dossier et la date/heure du jour)
$row[3] correspond au résultat SQL d'une colonne de date (format MYSQL : DATE --> 0000-00-00 00:00:00)
-------------------------------------------------------------------------------
Script :
$hf=date("H");//heure de fin (dans mon cas, heure du jour)
$mif=date("i");//minute de fin (dans mon cas, minute du jour)
$sf=date("s"); //seconde de fin (dans mon cas, seconde du jour)
$jf=date("d");//jour de fin (dans mon cas, aujourd'hui)
$mf=date("m");//mois de fin (dans mon cas, mois en cours)
$af=date("Y");//année de fin (dans mon cas, année en cours)
$hd=substr($row[3],11,2);//heure de début (dans mon cas, heure de dépôt)
$mid=substr($row[3],14,2);//minute de début (dans mon cas, minute de dépôt)
$sd=substr($row[3],17,2);//seconde de début (dans mon cas, seconde de dépôt)
$jd=substr($row[3],8,2);//jour de début (dans mon cas, jour de dépôt)
$md=substr($row[3],5,2);//mois de début (dans mon cas, mois de dépôt)
$ad=substr($row[3],0,4);//année de début (dans mon cas, annee de dépôt)
// Traitement date et heure en cours
$pf = mktime($hf,$mif,$sf,$mf,$jf,$af);
// Traitement date et heure de dépôt
$pd = mktime($hd,$mid,$sd,$md,$jd,$ad);
// Différence entre les 2 dates
$ts=abs($pf-$pd);
//Transformation en nombre de jours
$nbj=floor($ts/86400); // Nombre de jours écoulés
$tp=$nbj*86400; // nombre de jours retransformés en secondes
//Transformation en nombre d'heures
$nbh=$ts - $tp; // nombre de seconde total - nombre de jours écoulés
$nbh = floor($nbh/3600); // Nombre d'heures écoulées
$td=$nbh*3600; // nombre d'heures retransformés en secondes
// transformation en nombre de minutes
$nbm=$ts-($tp+$td); // nombre de seconde total - nombre de jours écoulés + nombre d'heures écoulées
$nbm=floor($nbm/60); // nombre de minutes écoulées
$tf=$nbm*60; // nombre de minutes retransformés en secondes
// transformation en nombre de secondes
$nbs=$ts-($tp+$td+$tf); // nombre de seconde total - nombre de jours écoulés + nombre d'heures écoulées + nombre de minutes écoulées
$nbs=floor($nbs); // nombre de secondes écoulées
-------------------------------------------------------------------------------
Code d'affichage dans la page
<? if ($nbj>"0") {?><? echo $nbj ?> jour<? if ($nbj>"1") {?>s<? } ?><? } ?><? if ($nbh>"0") {?> <? echo $nbh ?> heure<? if ($nbh>"1") {?>s<? } ?><? } ?><? if ($nbm>"0") {?> <? echo $nbm ?> minute<? if ($nbm>"1") {?>s<? } ?><? } ?><? if ($nbs>"0") {?> <? echo $nbs ?> seconde<? if ($nbs>"1") {?>s<? } ?>
-------------------------------------------------------------------------------
Exemple de résultats affichés
22 jours 14 heures 14 minutes 51 secondes
1 jour 23 heures 47 minutes 31 secondes
1 jour 23 heures 43 minutes
4 heures 54 minutes 35 secondes
...
Voila, je pense que tout est terminé.
Bon courage à tous et merci pour votre aide.
18 juin 2008 à 19:23
J'ai toujours un problème car il me renvoie toujours le même chiffre et ne le traduit pas en jours, heures, minutes.
$datejour=date("H,i,s m,d,Y");
$datedepot=substr($row[3],11,2).",".substr($row[3],14,2).",".substr($row[3],17,2)." ".substr($row[3],5,2).",".substr($row[3],8,2).",".substr($row[3],0,4);
$difference = abs(mktime($datejour) - mktime($datedepot)) * 3600 * 24;
// Résultats
19,19,54 06,18,2008($datejour) || 00,00,00 05,29,2008($datedepot) || 5909760000($difference)
19,19,54 06,18,2008($datejour) || 14,24,23 06,18,2008($datedepot) || 1555200000($difference)
19,19,54 06,18,2008($datejour) || 14,27,20 06,18,2008($datedepot) || 1555200000($difference)
19,19,54 06,18,2008($datejour) || 14,53,32 06,18,2008($datedepot) || 1555200000($difference)
...
Saurais-tu ce qui se passe ?
Merci de ta réponse