[PHP] m'expliquer mktime()

Résolu/Fermé
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 - 11 sept. 2009 à 22:17
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 - 12 sept. 2009 à 17:09
Bonjour,

quand je fais
$date1 = "2009-06-24 12:53:25";
$date2 = "2009-06-25 19:09:25";

echo(mktime($date1));
echo "<br />";
echo(mktime($date2));
çà me renvoie la meme valeur (entier long). Pourquoi ?
Il y a quelque chose que je ne fais pas ?
Ce que je cherches à faire, c'est de calculer le nombre de minutes,secondes entre $date2 et^$date1.
Mon schéma en tete est de convertir les 2 date des timestpam, puis de soustraire et de multiplier par 3600.

Là je bute...
Merci
A voir également:

6 réponses

Utilisateur anonyme
11 sept. 2009 à 22:28
Bonjour Moderno,

Je n'ai pas vu dans la doc PHP (https://www.php.net/manual/fr/function.mktime.php que l'on puisse mettrer une date de cette forme en paramètre mktime...
Il faut mettre successivement heure, minutes, secondes, mois, jour, année.

Par contre tu pourrais essayer la fonction date comme tel :
$date1 = "2009-06-24 12:53:25";
echo date("U",$date1);

U signifiant le temps depuis UNIX, comme mktime.
Je ne suis pas sûr que ça marche !

A bientôt !
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
12 sept. 2009 à 00:45
Bonjour.

Comme le dit rd_9, tu n'utilises pas la fonction comme il faut. Comme tes paramètres ne sont pas valides, PHP pas, si je ne me trompe pas, te renvoyer le timestamp courant (paramètres par défaut).
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
12 sept. 2009 à 06:20
echo date("U",$date1);
me renvoie l'année de la date.
Je dois faire quoi pour avoir le nombre de secondes de chaque date ?
J'ai essayé avec strtotime, ça me renvoie pour 2 date différentes la meme chose
$date1 = "2009-06-24 12:53:25";
$date2 = "2009-06-24 13:01:25";
echo strtotime($date1);
echo "<br />";
echo strtotime($date1);

renvoie
1245840805
1245840805

Je vais essayer de corriger ça autrement sinon...
Je pense suivre mon idée de récupérer la date en timestamp et convertir après.
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
12 sept. 2009 à 08:20
bon alors j'ai cojité
zt j'ai réussi ; j'y suis presque. J'ai compris pour mktime !
En fait je fait finalement
$date1 = mktime(13,00,32,10,04,2009);
$date2 = mktime(13,36,09,10,04,2009);
$difference = ($date2-$date1);
echo date('h:i:s',$difference);

Le seule truc c'est qu'il me renvoie 01:35:28
A mon avis il faut enlever 1 à heure mais je vois pas pk il ne me mets pas 0:35:28...

Merci encore de votre aide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
12 sept. 2009 à 09:44
Re-bonjour !

Encore une fois selon la doc, le "h" minuscule de la fonction date, c'est l'heure à format 12 heures, qui va de 01 à 12. Remplace le "h" par "H" ou "G" pour avoir 0.

Il peut quand même y avoir un défaut dans ton code; supposons les deux dates suivantes :
$date1 = mktime(13,00,32,10,04,2009);
$date2 = mktime(13,36,09,11,04,2009);

Dans ton code, la différence sera affiché comme 00:35:28 alors qu'il y aura un jour de différence...
0
moderno31 Messages postés 870 Date d'inscription mardi 23 juin 2009 Statut Membre Dernière intervention 8 août 2012 92
12 sept. 2009 à 17:09
Hello,
Désolé de te faire répéter mais j'avais pas compris. J'ai trouvé un site qui donne les correspondances de h, H,i...
Sans ça je ne savais pas ce que cela pouvais dire.
Effectivement tu as raison, en utilisant H je trouve mon bonheur.

Merci pour ces explications.
0