Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2853 connectés 

 


Dernière réponse
Sujet : PHP : petite question...calculer le temps entre 2 dates...
Texaff nbvcxwqazerty Upupupupupupupupppppp
 
 
par ce que la je comprends pos :??:

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
Texaff nbvcxwqazerty Upupupupupupupupppppp
 
 
par ce que la je comprends pos :??:
Texaff nbvcxwqazerty

persnet a écrit a écrit :

Mes dates sont au format DD/MM/YYYY HH:MI:SS
pour l'annee le mois et le jour tu peux tres bien diviser ton timestamp par 86400 et tu aura le nombre de jours ecoules  




 
ton truc a l'air plutot complexe, vu que c'est du bidouillage.
(mais ca marche !)
 
je prefere faire technique "correct".
surtout que je sans que je suis proche du but seulement y a une enorme couille lors de l'affichage de la date!
pourquoi il m'affiche 2033 c'est incomprehensible!!

persnet Mes dates sont au format DD/MM/YYYY HH:MI:SS
pour l'annee le mois et le jour tu peux tres bien diviser ton timestamp par 86400 et tu aura le nombre de jours ecoules
Texaff nbvcxwqazerty

persnet a écrit a écrit :

Si ca peut tjs t'aider malgre les remarques de certains, un touuuuuuuute petite routine qui tranforme un temps en hhh:mm:ss
 
function Caldureehms($Duree)
{
// Mise en forme d'une duree (en seconde) au format hh:mm:ss
         $Heure=intval($Duree/3600);
         $Reste=$Duree%3600;
         $Minute=intval($Reste/60);
         $Seconde=$Reste%60;
         $Resultat = $Heure.":".sprintf("%02d",$Minute).":".sprintf("%02d",$Seconde);
         return $Resultat;  




 
mais moi il doit y avoir l'annee le moi et le jour aussi...
sinon pour ton script plus haut, les date sont en quel format?

persnet Si ca peut tjs t'aider malgre les remarques de certains, un touuuuuuuute petite routine qui tranforme un temps en hhh:mm:ss
 
function Caldureehms($Duree)
{
// Mise en forme d'une duree (en seconde) au format hh:mm:ss
         $Heure=intval($Duree/3600);
         $Reste=$Duree%3600;
         $Minute=intval($Reste/60);
         $Seconde=$Reste%60;
         $Resultat = $Heure.":".sprintf("%02d",$Minute).":".sprintf("%02d",$Seconde);
         return $Resultat;
Texaff nbvcxwqazerty manou>>
:cry: efectivemnt y a plus simple :lol:
 
 
mais ca resoud aps mon probleme :cry:
persnet M@nu a ecrit
et autrement y'en a qui se compliquent bcp la vie ("petite routine...heu....)  ;);)  
 
Mes dates sont au format dd/mm/yyyy
T'as une autre solution pour les convertir et utiliser le mktime?
M@nu on peut remplacer ça :
 
$annee=date(Y);
$mois=date(m);
$jour=date(d);
$heure=date(H);
$minute=date(i);
$seconde=date(s);
 
$date1=mktime($heure,$minute,$seconde,$mois,$jour,$annee);
 
par ça : $date1=time(); ;)
 
et autrement y'en a qui se compliquent bcp la vie ("petite routine"...heu....) ;););)

 

[edtdd]--Message édité par M@nu--[/edtdd]

Texaff nbvcxwqazerty

persnet a écrit a écrit :

Petite routine que j'ai fait si ca peut t'aider
 
function DiffDate($Date_Appel,$Date_Appeldeb)
{
                /*-------------------------------------------------------------
                Calcul d'uner duree en seconde entre 2 dates
 
                $Tps   = strToTime($Date_Appel);
                $Tpsdeb= strToTime($Date_Appeldeb);
                $dd=substr($Date_Appel,0,2);
                $mm=substr($Date_Appel,3,2);
                $yy=substr($Date_Appel,6,4);
                $hh=substr($Date_Appel,11,2);
                $mi=substr($Date_Appel,14,2);
                $ss=substr($Date_Appel,17,2);
                $dddeb=substr($Date_Appeldeb,0,2);
                $mmdeb=substr($Date_Appeldeb,3,2);
                $yydeb=substr($Date_Appeldeb,6,4);
                $hhdeb=substr($Date_Appeldeb,11,2);
                $mideb=substr($Date_Appeldeb,14,2);
                $ssdeb=substr($Date_Appeldeb,17,2);
                $Tps=mkTime($hh,$mi,$ss,$mm,$dd,$yy);
                $Tpsdeb=mkTime($hhdeb,$mideb,$ssdeb,$mmdeb,$dddeb,$yydeb);
                $Duree = $Tps - $Tpsdeb;
                return $Duree;  




 
 
ca m'interesse mais en quel forumat sont les dates?

Texaff nbvcxwqazerty $dat=date("H:i:s m/d/Y ",mktime(0,0,$date2));
 
print("$date2" );
il m'affiche  
 
8:25:31  04/22/2033
 
 
hors on est pas trop en 2033?? ni le 22 avril ni a 8:25...
persnet Petite routine que j'ai fait si ca peut t'aider
 
function DiffDate($Date_Appel,$Date_Appeldeb)
{
                /*-------------------------------------------------------------
                Calcul d'uner duree en seconde entre 2 dates
 
                $Tps   = strToTime($Date_Appel);
                $Tpsdeb= strToTime($Date_Appeldeb);
                $dd=substr($Date_Appel,0,2);
                $mm=substr($Date_Appel,3,2);
                $yy=substr($Date_Appel,6,4);
                $hh=substr($Date_Appel,11,2);
                $mi=substr($Date_Appel,14,2);
                $ss=substr($Date_Appel,17,2);
                $dddeb=substr($Date_Appeldeb,0,2);
                $mmdeb=substr($Date_Appeldeb,3,2);
                $yydeb=substr($Date_Appeldeb,6,4);
                $hhdeb=substr($Date_Appeldeb,11,2);
                $mideb=substr($Date_Appeldeb,14,2);
                $ssdeb=substr($Date_Appeldeb,17,2);
                $Tps=mkTime($hh,$mi,$ss,$mm,$dd,$yy);
                $Tpsdeb=mkTime($hhdeb,$mideb,$ssdeb,$mmdeb,$dddeb,$yydeb);
                $Duree = $Tps - $Tpsdeb;
                return $Duree;
Texaff nbvcxwqazerty Bon enfait je reessaye ce matin ... et ca marche nickel.
allez savoir pkoi!
 
maintenant il me reste a restituer cet enorme nombre en date...
je pense que j'aurai pas trop de probleme.
 
 
merci M@nou pour ta technique!
a+
Texaff nbvcxwqazerty upupupupupupupupuppppppppp ;)

 

[edtdd]--Message édité par Texaff nbvcxwqazerty--[/edtdd]

Texaff nbvcxwqazerty antibillou >> erreur de frappe ;)
you dont care>> en fait c'est bien le code qui est faux
 
 
M@nou>> alors j'ai suivi ce que tu m'as dis c'est a dire ma table contient un bigint a la place d'une date.
 
voila mon code:
 
$tecoule= 0 ;
 
$annee=date(Y);
$mois=date(m);
$jour=date(d);
$heure=date(H);
$minute=date(i);
$seconde=date(s);
 
 
$date1=mktime($heure,$minute,$seconde,$mois,$jour,$annee);
 
$tdata= mysql_query("SELECT * FROM Table WHERE personne like '$personne' ORDER by date DESC" );
 
$nbpse = mysql_numrows($tdata);
 
if ($nbpse != 0)
{$date2 = mysql_result($date2,0,"date" );
 
$tecoule = ($date1-$date2);
 
print($tecoule);
 
 
voila le code c'est donc une personne qui a chaque fois qu'elle se presente affiche une date, et regarde depuis la derniere fois qu'elle venu le temps qui s'est ecoulé.
 
seulement $tecoule augmente tout le temps, a croire que $date2 est la 1 ere entré et pas la derniere comme je le veux
 
bon j'espere que j'ai ete clair...
quelqu'un vois mon erreur?
 
 
EN TOUT CAS MERCI A VOUS TROIS!
 :)

 

[edtdd]--Message édité par Texaff nbvcxwqazerty--[/edtdd]

M@nu et autrement si ça te donne la mm chose c parce que t'as pas bien lu la doc...
dans mktime comme ds ttes les fonctions, le séparateur c'est la virgule...et voilà ce que tu demandes en fait...
 
mktime(Y,m,d,H:i:s)  
 
donc comment tu veux que ça marches ?
=> ça, ça te donnerait le timestamp pour cette date : mktime(heure,minute,seconde,mois,jour,annee)  
 
donc si tu tiens vraiment à ton truc, il faut trafiquer ta date avec des regex...
M@nu Encore 1 fois...c'est 100 fois + simple de stocker ds ta bdd le timestamp (nbre de secondes depuis le 1er janv 1970) récupéré avec time() ou plein d'autres fonctions...
=> les opérations entre +sieurs dates st super simples...
=> le passage à une date normale est aussi...super simple...
 
en plus ça prend moins de place ds ta bdd...
 
si avec ça t'es pas convaincu...
youdontcare

Texaff nbvcxwqazerty a écrit a écrit :

bon alors voila mon truc:
 
voici la premiere date:
 
$date1=date("Y,m,d,H:i:s" );
print(mktime($date));
 
 
voici la 2nde(date recuperer d une table mysql creer longtps avant...):
print(mktime($date2));
 
et les 2 print m'affiche sensiblement la meme chose! comment ca se fait?
merci pour votre aide en tout cas!


tout est dans le 'sensiblement' :D mktime() convertit une date en nombre de secondes écoulées depuis ... je sais plus quand.
 
donc mktime($date2) - mktime($date1) te donnera le temps entre les deux dates, en secondes.

antibillou

Texaff nbvcxwqazerty a écrit a écrit :

bon alors voila mon truc:
 
voici la premiere date:
 
$date1=date("Y,m,d,H:i:s" );
print(mktime($date));
 
 
voici la 2nde(date recuperer d une table mysql creer longtps avant...):
print(mktime($date2));
 
et les 2 print m'affiche sensiblement la meme chose! comment ca se fait?
merci pour votre aide en tout cas!  
 
 




tu a 3 variables, est-ce normal ? ($date, $date1, $date2)

Texaff nbvcxwqazerty bon alors voila mon truc:
 
voici la premiere date:
 
$date1=date("Y,m,d,H:i:s" );
print(mktime($date));
 
 
voici la 2nde(date recuperer d une table mysql creer longtps avant...):
print(mktime($date2));
 
et les 2 print m'affiche sensiblement la meme chose! comment ca se fait?
merci pour votre aide en tout cas!

 

[edtdd]--Message édité par Texaff nbvcxwqazerty--[/edtdd]

Texaff nbvcxwqazerty

antibillou a écrit a écrit :

En effet, Avec mktime(), tu aura ta date au format UNIX (comptage des secondes depuis xx/xx/1970 ainsi en faisant la soustraction des deux dates au format mktime, tu connaitra le temps qui s'est écoulé  




ok je vais voir merci!

antibillou En effet, Avec mktime(), tu aura ta date au format UNIX (comptage des secondes depuis xx/xx/1970 ainsi en faisant la soustraction des deux dates au format mktime, tu connaitra le temps qui s'est écoulé
youdontcare regarde mktime().
Texaff nbvcxwqazerty up !  
pourtant ca a l'air simple mais j'ai b0 chercher partout...

 

[edtdd]--Message édité par Texaff nbvcxwqazerty--[/edtdd]

Texaff nbvcxwqazerty voila ma date est dans ce format:
date("Y,m,d,H,i,s" )
 
j'en affichhe 2 a un peu pres 40 seconde d'intervalle.,
 
afficher :"entre les deux date il s'est ecoulé 40 secondes."
 
enclair c'est une comparaison entre les 2 dates..
merci pour votre aide  
a+

 

[edtdd]--Message édité par Texaff nbvcxwqazerty--[/edtdd]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)