PHP : petite question...calculer le temps entre 2 dates...

PHP : petite question...calculer le temps entre 2 dates... - Programmation

Marsh Posté le 26-08-2001 à 16:14:40    

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]

Reply

Marsh Posté le 26-08-2001 à 16:14:40   

Reply

Marsh Posté le 26-08-2001 à 16:30:03    

up !  
pourtant ca a l'air simple mais j'ai b0 chercher partout...

 

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

Reply

Marsh Posté le 26-08-2001 à 16:35:22    

regarde mktime().

Reply

Marsh Posté le 26-08-2001 à 17:05:30    

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é


---------------
http://212.95.67.13/fla/pri.cgi?a= [...] 50&f=20&g=
Reply

Marsh Posté le 26-08-2001 à 17:52:42    

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!

Reply

Marsh Posté le 26-08-2001 à 18:43:47    

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]

Reply

Marsh Posté le 26-08-2001 à 18:54:22    

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)


---------------
http://212.95.67.13/fla/pri.cgi?a= [...] 50&f=20&g=
Reply

Marsh Posté le 26-08-2001 à 19:05:27    

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.

Reply

Marsh Posté le 26-08-2001 à 19:06:48    

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...

Reply

Marsh Posté le 26-08-2001 à 19:12:29    

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...

Reply

Marsh Posté le 26-08-2001 à 19:12:29   

Reply

Marsh Posté le 26-08-2001 à 21:37:48    

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]

Reply

Marsh Posté le 27-08-2001 à 09:59:26    

upupupupupupupupuppppppppp ;)

 

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

Reply

Marsh Posté le 27-08-2001 à 10:32:49    

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+

Reply

Marsh Posté le 27-08-2001 à 11:14:33    

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;

Reply

Marsh Posté le 27-08-2001 à 11:15:09    

$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...

Reply

Marsh Posté le 27-08-2001 à 11:17:00    

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?

Reply

Marsh Posté le 27-08-2001 à 11:18:33    

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]

Reply

Marsh Posté le 27-08-2001 à 11:23:33    

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?

Reply

Marsh Posté le 27-08-2001 à 11:29:19    

manou>>
:cry: efectivemnt y a plus simple :lol:
 
 
mais ca resoud aps mon probleme :cry:

Reply

Marsh Posté le 27-08-2001 à 11:36:21    

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;

Reply

Marsh Posté le 27-08-2001 à 11:39:13    

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?

Reply

Marsh Posté le 27-08-2001 à 11:46:01    

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

Reply

Marsh Posté le 27-08-2001 à 11:59:32    

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!!

Reply

Marsh Posté le 27-08-2001 à 14:57:00    

Upupupupupupupupppppp
 
 
par ce que la je comprends pos :??:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed