bonjour,
j'aimerais soustraire deux dates qui ont cette forme :
2011-08-22 10:36:23
2011-08-09 00:00:00
et avoir le résultat en heure. j'ai beau cherché une fonction qui effectue ça directement mais sans résultat.
Version imprimable
bonjour,
j'aimerais soustraire deux dates qui ont cette forme :
2011-08-22 10:36:23
2011-08-09 00:00:00
et avoir le résultat en heure. j'ai beau cherché une fonction qui effectue ça directement mais sans résultat.
Bonjour,
Tout dépend de la version de PHP que tu utilises.
Si tu utilises les dernières versions de PHP (5) regardes :
http://www.php.net/manual/fr/datetime.sub.php
Sinon il faut regarder du coté de mktime et strftime
http://fr.php.net/manual/fr/function.mktime.php
http://fr.php.net/manual/fr/function.strftime.php
ça me retourne ceciCode:
1
2
3 $idcreate= $row->date_de_création; $idaction= $row->date_de_dernière_action; $sous = $idaction ->diff( $idcreate );
Call to a member function diff() on a non-object in C:\wamp\www\2\duree_acc.php on line 26
(line 26 est celle de $sous = $idaction ->diff( $idcreate ))
Utilisepour pouvoir utiliser la fonction diff par la suite.Code:Datetime::createFromFormat
avec $idcreate et $idaction avec cette formeCode:
1
2
3
4
5
6
7
8
9
10
11
12 while($row=mysql_fetch_object($query)) { $idcreate= $row->date_de_création; $idaction= $row->date_de_dernière_action; $total++; $sous = $idaction ->diff( $idcreate ); $add=$add - $sous ; }
2011-08-22 10:36:23
Il n'y a aucun Datetime la...
oui en fait j'ai enlevé le datetime en espérant que ça va marcher; mais en vain;
le code avec date time est
Code:
1
2
3
4
5
6
7
8
9
10
11
12 while($row=mysql_fetch_object($query)) { $idcreate= new DATETime($row->date_de_création); $idaction=new DATETime ($row->date_de_dernière_action); $total++; $sous = $idaction ->diff( $idcreate ); $add=$add - $sous ; }
erreur :
Notice: Object of class DateInterval could not be converted to int in C:\wamp\www\2\duree_acc.php on line 28
Call Stack
Catchable fatal error: Object of class DateInterval could not be converted to string in C:\wamp\www\2\duree_acc.php on line 33
Merci d'avance
regarde bien la doc, ça renvoie un DateInterval
au passage pourquoi mettre ça en majuscule ? pourquoi mettre des accents dans tes noms de champs ?
j'ai trouvé la solution , on peut le faire avec mysql avec la commande timediff
mais je c pa comment récupérer le résultat de timediff pour l'utiliser dans mes calculs :/
C'est-à-dire ? Récupérer la valeur calculée par la requête ?
ou sinon nommer :Code:
1
2
3 $sql = mysql_query("SELECT TIMEDIFF('".$date_fin."','".$date_debut."')"); $tempsTotal = mysql_fetch_array($sql_temps); echo "Resultat : ".$tempsTotal[0];
Fais bien attention à ce que les dates "$date_fin" et "$date_debut" aient bien le même format (time ou datetime pour les deux).Code:
1
2
3 $sql = mysql_query("SELECT TIMEDIFF('".$date_fin."','".$date_debut."') as ecart"); $tempsTotal = mysql_fetch_array($sql_temps); echo "Resultat : ".$tempsTotal['ecart'];