Les Allergies
Alimentaires
Posez votre question Signaler

[PHP] m'expliquer mktime() [Résolu]

moderno31 871Messages postés 23 juin 2009Date d'inscription 21 avril 2011Dernière intervention - Dernière réponse le 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
Lire la suite 

[PHP] m'expliquer mktime() »

6 réponses
Réponse
+0
moins plus
Bonjour Moderno,

Je n'ai pas vu dans la doc PHP (http://fr.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 !
Ajouter un commentaire
Réponse
+0
moins plus
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).
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Réponse
+0
moins plus
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...
Ajouter un commentaire
Réponse
+0
moins plus
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.
Ajouter un commentaire
Ce document intitulé « [PHP] m'expliquer mktime() » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?