IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Dates] Erreur avec mktime


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 52
    Points
    52
    Par défaut [Dates] Erreur avec mktime
    Bonjour,

    Je n'arrive pas a additionner 2 date au format mktime :s

    Voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    $heure = mktime($_POST['duree_heure'],$_POST['duree_minute']);
    $duree_reelle = date("h:i",$heure);
    
    echo $heure . '<br>'; // retourne 1150759836
    echo $duree_reelle . '<br>'; // retourne 01:30
    
    
    $heur = mktime($_POST['heure'],$_POST['minute']);
    $heur2 = date("h:i",$heur);
    
    echo $heur . '<br>'; // retourne 1150785036
    echo $heur2 . '<br>'; // retourne 08:30
    
    
    $heur_fin = $heure+$heur; 
    $heur_fin2 = date("h:i",$heur_fin);
    
    echo $heur_fin . '<br>'; // retourne  2301544818
    echo $heur_fin2 . '<br>'; // retourne Warning: date(): Windows does not support dates prior to midnight (00:00:00), January 1, 1970
    
    
    $heu = $duree_reelle+$heur2;
    echo $heu; // retourne 9 (la duree est de 01:30 et l'heure est de 08:30)
    Merci de m'expliquer ce qui coince :s

  2. #2
    Membre régulier

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 94
    Points : 120
    Points
    120
    Par défaut
    en fait, tu additionnes les dates...
    Pour additionner des heures, c'est plutôt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fin = mktime() + ($_POST["duree_heure"]*3600) + ($_POST["duree_minute"]*60);
    echo date("h:i", $fin);

  3. #3
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    comme un exemple vaut mieux qu'un long discours...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?php
    $heure_origine = 1;
    $minute_origine = 30;
    $heure_a_ajouter = 8;
    $minute_a_ajouter = 30;
     
    $heure = mktime($heure_origine,$minute_origine); // pour l'exemple 1h30
    $duree_reelle = date("h:i",$heure);
     
    echo "heure d'origine : $duree_reelle <br>";
     
    $temps_a_ajouter = $heure_a_ajouter*3600; // heures a ajouter
    $temps_a_ajouter += ($minute_a_ajouter*60);  // minutes a ajouter
     
    echo "maintenant on ajoute 8 h 30<br />";
     
    $heure_fin = $heure+$temps_a_ajouter; 
    $heure_fin2 = date("h:i",$heure_fin);
     
     
    echo "Ce qui nous fait : ".$heure_fin2; 
     
    ?>

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 52
    Points
    52
    Par défaut
    Je n'ai plus d'erreur mais avec ton code (j'ai juste modifié le nom de la variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $fin = mktime() + ($_POST["duree_heure"]*3600) + ($_POST["duree_minute"]*60);
    $heure_fin = date("h:i", $fin);
    Ca me retourne ca :
    heure_debut = '08:00'
    duree = '01:00'
    heure_fin='04:46'

  5. #5
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    attention Sandara a une chose néanmoins,

    cette fonction utilise un timestamp donc un nombre de seconde depuis un instant T
    si tu veux juste additionner un temps ce n'est peut-être pas ce que tu cherchais

    exemple, imaginons que tu veuilles additionner 23h30 et 8h30
    dans le cas d'une addition de temps on devrait trouver 32 heures
    mais avec un timestamp on obtient 8 heures
    normal puisqu'à 23h30 si on ajoute 8h30 on se retrouve le lendemain à 8h00...

    je ne sais pas si j'ai été assez clair là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?php
    $heure_origine = 23;
    $minute_origine = 30;
    $heure_a_ajouter = 8;
    $minute_a_ajouter = 30;
     
    $heure = mktime($heure_origine,$minute_origine); // pour l'exemple 1h30
    $duree_reelle = date("H:i",$heure);
     
    echo "heure d'origine : $duree_reelle <br>";
     
    $temps_a_ajouter = $heure_a_ajouter*3600; // heures a ajouter
    $temps_a_ajouter += ($minute_a_ajouter*60);  // minutes a ajouter
     
    echo "maintenant on ajoute 8 h 30<br />";
     
    $heure_fin = $heure+$temps_a_ajouter; 
    $heure_fin2 = date("H:i",$heure_fin);
     
     
    echo "Ce qui nous fait : ".$heure_fin2; 
     
    ?>

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 52
    Points
    52
    Par défaut
    Merci, ca marche tres bien ^^



    J'y retourne :

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 52
    Points
    52
    Par défaut
    Je me permet de rajouter un commentaire sur mon post résolu plutot que d'en recréer un autre puisque j'ai une petite erreur similaire.

    Je dois maintenant multiplier ma durée par un coefficient pour me donner heure_compta (une heure comptabilisée).

    J'ai ca comme code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?
    $heuree = $_POST['duree_heure']*3600;
    $heuree += ($_POST['duree_minute']*60);
     
    // on multiplie par le coefficient
    $heur3=$heuree*$_POST['coeff'];
    $heure_compta = date("h:i",$heur3);
    ?>

    Cependant pour certains coefficient comme 0.46 ca ne fonctionne pas.
    De plus apres validation il faut que je retourne dans ma popup de modification pour que la page d'index ai pris en compte les modification, malgré que j'ai un location reload apres avoir valider la modif.

    Pouvez vous m'aider ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 171
    Points : 52
    Points
    52
    Par défaut
    Personne n'a une solution à mon problème ? ca me bloque pour la suite de mon projet :s

Discussions similaires

  1. [Dates] Erreur de calcul avec la fonction mktime ?
    Par Xpertfly dans le forum Langage
    Réponses: 1
    Dernier message: 18/11/2008, 11h40
  2. [Dates] Erreur avec mktime()
    Par Chikh001 dans le forum Langage
    Réponses: 3
    Dernier message: 21/04/2008, 13h10
  3. Réponses: 1
    Dernier message: 25/05/2007, 22h31
  4. [Dates] probleme avec mktime et interval entre dates
    Par steinfield dans le forum Langage
    Réponses: 7
    Dernier message: 18/05/2006, 12h47
  5. [Dates] pb avec date et mktime
    Par dark_vidor dans le forum Langage
    Réponses: 1
    Dernier message: 08/09/2005, 21h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo