|
Dernière réponse | |
---|---|
Sujet : PHP : petite question...calculer le temps entre 2 dates... | |
Texaff nbvcxwqazerty | Upupupupupupupupppppp
par ce que la je comprends pos :??: |
Aperçu |
---|
Vue Rapide de la discussion |
---|
Texaff nbvcxwqazerty | Upupupupupupupupppppp
par ce que la je comprends pos :??: |
Texaff nbvcxwqazerty |
|
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 | 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 |
|
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 |
tout est dans le 'sensiblement' :D mktime() convertit une date en nombre de secondes écoulées depuis ... je sais plus quand.
|
antibillou |
|
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 | 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] |