Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
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 27/01/2012, 19h52   #1
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2011
Messages : 35
Points : 11
Points : 11
Par défaut Différence de temps (dates et heures)

Salut,
J'ai cherché un peu partout, j'ai trouvé des pages répondant à mon problème, mais j'ai pas trouvé d'explication assez clair pour m'aider...

Mon problème est simple : J'ai deux dates distinctes (complètes, avec jours, mois, années, heures, minutes et secondes), et j'aimerais savoir combien de secondes se sont écoulées entre les deux.
Je peux mettre ces dates dans n'importe quel format, avec séparateurs ou non, ça ne pose aucun problème.

Maintenant j'aimerais savoir : existe-il une fonction ou une marche à suivre, qui me permettent simplement de récupérer le nombre de secondes écoulées entre ces deux dates, sous forme d'entier ?

J'ai trouvé des trucs au niveau des fonctions time et mktime, mais je n'ai pas réussi à les utiliser...

Dans l'attente d'une aide précieuse,
merci
Taratis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 21h02   #2
Membre éclairé
 
Inscription : juin 2007
Messages : 337
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 337
Points : 393
Points : 393
Code :
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$d1 =  mktime(0, 0, 0, 7, 1, 2000);
$d2 =  mktime(0, 0, 0, 7, 1, 2001);
echo $d2 ;
echo '<br/>';
echo $d1;
echo '<br/>';
echo $d2 - $d1;
echo '<br/>';
echo (365*12*30*24*60*60)/360;
echo '<br/>';
?>
et qui nous donne

Code :
1
2
echo 365*24*60*60;
echo '<br/>';
365 jours de 24 h de 60 mn et 60 s, soit une année complète en seconde
__________________
Conception / Dev
ascito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 22h22   #3
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Bonsoir,

tu peux aussi faire ainsi :
Code :
1
2
3
4
5
6
7
8
<?php
 
$start   = new DateTime('2012-01-01 00:00:00');
$end     = new DateTime('2012-01-27 22:12:45');
$diff    = $end->diff($start);
$seconds = ($diff->format('%a') * 86400) + ($diff->h * 3600) + ($diff->i * 60) + $diff->s;
 
?>
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 22h45   #4
Membre éclairé
 
Inscription : juin 2007
Messages : 337
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 337
Points : 393
Points : 393
moi je pensais que mktime, qui calcule le nombre de seconde passé depuis le
1er Janvier 1970 00:00:00 GMT était fiable.. puis en refaire une date, une période etc...
__________________
Conception / Dev
ascito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 22h53   #5
Expert Confirmé
 
Avatar de rawsrc
 
Homme Martin
Dev indep
Inscription : mars 2004
Messages : 1 462
Détails du profil
Informations personnelles :
Nom : Homme Martin
Âge : 35
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Dev indep

Informations forums :
Inscription : mars 2004
Messages : 1 462
Points : 2 552
Points : 2 552
Envoyer un message via Skype™ à rawsrc
Citation:
Envoyé par ascito Voir le message
moi je pensais que mktime, qui calcule le nombre de seconde passé depuis le
1er Janvier 1970 00:00:00 GMT était fiable.. puis en refaire une date, une période etc...
il l'est pas de soucis, c'est juste qu'en fonction des versions de php, le paramétrage de la fonction a évolué.
J'ai juste pris l'habitude de travailler avec DateTime(), c'est tout
__________________
# Dans la Création, tout est permis mais tout n'est pas utile...
rawsrc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2012, 23h01   #6
Membre éclairé
 
Inscription : juin 2007
Messages : 337
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 337
Points : 393
Points : 393
ce serait mentir que de dire je ne n'utilise pas aussi cela, voilou
__________________
Conception / Dev
ascito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/01/2012, 18h48   #7
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2011
Messages : 35
Points : 11
Points : 11
Tout d'abord, merci pour vos réponses

Je ne comprends pas pas vraiment ces deux codes... Si il faut multiplier chacun des membres, à quoi sert la DateTime et mktime ?
De plus, dans "(365*12*30*24*60*60)/360;", 30 semble être le nombre de jour dans un mois. Que se passera t'il à la fin d'un mois de 31 jours ou d'un mois de février ?
Je ne suis pas un adepte des codes tout fait, j'aimerais comprendre comment ils fonctionnent... pourriez-vous me les expliquer ?

Merci d'avance
Taratis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 09h00   #8
Membre éclairé
 
Inscription : juin 2007
Messages : 337
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 337
Points : 393
Points : 393
C’était juste pour te montrer que mktime

Citation:
mktime() retourne un timestamp UNIX correspondant aux arguments fournis. Ce timestamp est un entier long, contenant le nombre de secondes entre le début de l'époque UNIX (1er Janvier 1970 00:00:00 GMT) et le temps spécifié .
la soustraction de deux mktime donne donc le temps en seconde passé entre deux date, ce que tu cherches.
__________________
Conception / Dev
ascito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 10h31   #9
Membre éclairé
 
Inscription : juin 2007
Messages : 337
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 337
Points : 393
Points : 393
Pour aller plus loin que 1970 ,en fait il suffit d'ajouter 3600 s, pour que cela fonctionne, la date de référence 0 étant en vérité = -3600
__________________
Conception / Dev
ascito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 15h51   #10
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2011
Messages : 35
Points : 11
Points : 11
Ah oui, donc en gros si j'ai bien compris :

Code :
1
2
3
$d1 =  mktime(13, 45, 50, 7, 1, 2012);
$d2 =  mktime(13, 45, 50, 8, 1, 2012);
$diff = $d2 - $d1;
Dans ce cas, $diff vaut le nombre de secondes dans une journée, c'est à dire 86400, c'est cela ?
Si c'est cela, c'est exactement ce que je recherche, effectivement !

Dernière question, simple curiosité : si je met des "0" devant les chiffres simples, en gros si je tape "mktime(13, 45, 50, 07, 01, 2012)", je suppose que cela fonctionne aussi bien ?
Taratis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/01/2012, 16h21   #11
Candidat au titre de Membre du Club
 
Homme
Étudiant
Inscription : octobre 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : octobre 2011
Messages : 35
Points : 11
Points : 11
Bon, j'ai testé, ça a l'air de fonctionner, mais apparemment c'est un format H/M/S/M/J/A et non H/M/S/J/M/A x)

En tout cas merci beaucoup de votre aide à tous les deux !
Taratis est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h06.


 
 
 
 
Partenaires

Hébergement Web