Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 22/08/2011, 13h48   #1
Futur Membre du Club
 
Inscription : août 2011
Messages : 73
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 73
Points : 15
Points : 15
Par défaut Soustraction de dates

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.
sirina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 14h02   #2
Membre à l'essai
 
Homme
Ingénieur développement logiciels
Inscription : août 2011
Messages : 12
Détails du profil
Informations personnelles :
Sexe : Homme

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : août 2011
Messages : 12
Points : 20
Points : 20
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
neobast est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 14h20   #3
Futur Membre du Club
 
Inscription : août 2011
Messages : 73
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 73
Points : 15
Points : 15
Citation:
Envoyé par neobast Voir le message
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
oui j'utilise php 5.3.5
sirina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 14h42   #4
Futur Membre du Club
 
Inscription : août 2011
Messages : 73
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 73
Points : 15
Points : 15
Code :
1
2
3
$idcreate= $row->date_de_création;
   $idaction= $row->date_de_dernière_action;
$sous = $idaction ->diff( $idcreate );
ça me retourne ceci
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 ))
sirina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 15h46   #5
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 772
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 772
Points : 2 329
Points : 2 329
Utilise
Code :
Datetime::createFromFormat
pour pouvoir utiliser la fonction diff par la suite.
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 19h05   #6
Futur Membre du Club
 
Inscription : août 2011
Messages : 73
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 73
Points : 15
Points : 15
Citation:
Envoyé par FirePrawn Voir le message
Utilise
Code :
Datetime::createFromFormat
pour pouvoir utiliser la fonction diff par la suite.
oui je sais mais quand j'ai l'ai utilisé avec datetime , ça a généré "erreur fatale".
sirina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 19h06   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
Citation:
Envoyé par sirina88 Voir le message
oui je sais mais quand j'ai l'ai utilisé avec datetime , ça a généré "erreur fatale".
montre ton code et l'erreur complete
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 19h46   #8
Futur Membre du Club
 
Inscription : août 2011
Messages : 73
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 73
Points : 15
Points : 15
Code :
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 ;
 
 
}
avec $idcreate et $idaction avec cette forme
2011-08-22 10:36:23
sirina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 19h47   #9
Modérateur
 
Avatar de FirePrawn
 
Homme Sébastien
Ingénieur réalisateur
Inscription : mars 2011
Messages : 772
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Âge : 24
Localisation : France, Haut Rhin (Alsace)

Informations professionnelles :
Activité : Ingénieur réalisateur
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 772
Points : 2 329
Points : 2 329
Il n'y a aucun Datetime la...
__________________
- Avant toute chose : lire le mode d'emploi du forum et ses règles.
- avant de poster
- Je ne réponds pas aux questions techniques en MP.
FirePrawn est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 19h53   #10
Futur Membre du Club
 
Inscription : août 2011
Messages : 73
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 73
Points : 15
Points : 15
Citation:
Envoyé par FirePrawn Voir le message
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
sirina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/08/2011, 20h21   #11
Modérateur
 
Inscription : septembre 2010
Messages : 7 103
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 103
Points : 8 456
Points : 8 456
regarde bien la doc, ça renvoie un DateInterval
au passage pourquoi mettre ça en majuscule ? pourquoi mettre des accents dans tes noms de champs ?
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 10h49   #12
Futur Membre du Club
 
Inscription : août 2011
Messages : 73
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 73
Points : 15
Points : 15
j'ai trouvé la solution , on peut le faire avec mysql avec la commande timediff
sirina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 11h16   #13
Futur Membre du Club
 
Inscription : août 2011
Messages : 73
Détails du profil
Informations forums :
Inscription : août 2011
Messages : 73
Points : 15
Points : 15
mais je c pa comment récupérer le résultat de timediff pour l'utiliser dans mes calculs :/
sirina88 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2011, 11h50   #14
Membre éclairé
 
Avatar de Kaamo
 
Homme Cyril
Ingénieur développement logiciels
Inscription : avril 2007
Messages : 205
Détails du profil
Informations personnelles :
Nom : Homme Cyril
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : avril 2007
Messages : 205
Points : 367
Points : 367
C'est-à-dire ? Récupérer la valeur calculée par la requête ?

Code :
1
2
3
$sql = mysql_query("SELECT TIMEDIFF('".$date_fin."','".$date_debut."')");
$tempsTotal = mysql_fetch_array($sql_temps);
echo "Resultat : ".$tempsTotal[0];
ou sinon nommer :

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'];
Fais bien attention à ce que les dates "$date_fin" et "$date_debut" aient bien le même format (time ou datetime pour les deux).
Kaamo est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h40.


 
 
 
 
Partenaires

Hébergement Web