Problème avec l'heure en PHP

Bonjour,

J ai ecrit un script tout simple qui affiche l heure actuelle en PHP. Mais ça affiche l heure avec 2h en moins !!!

Voici mon script (issu d'un livre)

$heure=date("H");
$minute=date("i");
echo "Il est $heure h $minute !";


Donc par exemple si il est 19h, ce script m'affiche 17h !!!

Pourquoi ??

Merci

15 réponses

Résumé de la discussion

Un décalage horaire survient en PHP lors de l’affichage de l’heure actuelle et dépend de la configuration du fuseau horaire du serveur ou de l’installation locale. Les solutions les plus efficaces consistent à définir le fuseau via date_default_timezone_set('Europe/Paris') ou à modifier la directive date.timezone dans le fichier php.ini. Des exemples évoqués incluent Europe/Paris et Europe/Brussels, et l’heure affichée reflète le fuseau configuré par le serveur plutôt que l’heure du PC. En pratique, time() peut être utilisé avec date(H:i, time()) pour afficher l’heure courante sans dépendre du fuseau du poste, afin de refléter le fuseau configuré côté serveur.

Bobot (l’IA à votre service)
  1. Contributeur
    Depuis Php 5.1.0, on peut faire comme cela dans son code (si on ne maîtrise pas le paramétrage de php.ini) :

    date_default_timezone_set('Europe/Paris');

    Dal
    51
    1. On apprend de nos erreurs!
      Vérifier que votre fonction n'est pas commentée dans le fichier de configuration de php.
      ;date.timezone =Europe/Paris
      Otez le point virgule (;) du commentaire.
      ça fonctionne :)
      0
    2. @Synopsiset pour les personne qui vivre en amerique latine ont mais quoi a la place utc
      0
  2. Dans le php.ini, il faut modifier la directive "date.timezone" (utilise la fonction de recherche de ton éditeur de texte) et mettre l'identifiant du fuseau horaire dans lequel tu te trouve (cf. ici).
    Exemple :
    date.timezone = "Europe/Brussels"

    Faut pas oublier de décommenter la ligne.
    38
    1. ou "Europe/Paris"
      0
    2. Oui ou Europe/Madrid, Europe/Amsterdam, Europe/Rome, ...
      0
    3. Merci, ton explication est très claire et ma tout de suite montré comment faire :)
      0
    4. cool gars c'etait claire et nette. Merci
      0
    5. c'est franck desoler d'utiliser ton speudo "avion-f16"
      0
  3. ça y est ça marche !!!!! J ai remplacé :

    date.timezone = UTC

    par

    date.timezone = "Europe/Brussels"

    et la il est bien 22h40 quand je génère le script sur wamp c est trop cool !

    Merci
    5
    1. Bonjour à tous,

      J'ai beau changé le fichier php.ini, cela ne change rien je retrouve toujours l'heure actuelle -1.
      Je travail sous wampserver, le fichier php.ini est t'il bien celui se trouvant à l'adresse C:\wamp\bin\php\php5.3.0\php.ini ?

      voici les lignes où j'apporte les modifications :
      ; Defines the default timezone used by the date functions
      ; https://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
      date.timezone = UTC

      que je remplace par
      ; Defines the default timezone used by the date functions
      ; https://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone
      date.timezone = "Europe/Paris"

      Merci d'avance.

      Necro27
      2
      1. Bonjour.

        Le fichier php.ini utilisé par wamp est le suivant :
        C:\wamp\bin\apache\apachex.x.xx(votre version apache)\bin

        Le plus simple est de le modifier en ouvrant le fichier php.ini depuis le menu php du programme : cad en cliquant gauche sur l'icone Wamp du bureau, menu php.
        0
    2. Et si je vous dis que vous vous prennez la tete pour rien pour l'heure?

      https://www.php.net/manual/fr/function.time.php

      La fonction time() vous retourne l'heure actuelle...

      Exemple:

      $now=time();
      $heure=date(H:i,$now);
      echo "Il est actuellement:".$heure."<br>";
      


      En espérant vous avoir aidé. PHP manuel est la pour vous aider aussi. Il est très bien fait et on y trouve pas mal d'aide.
      1
      1. Et si je dis que tu dis n'importe quoi? Car si le serveur est au canada l'heure aura 6 heures de décalage avec la France.
        1
    3. je l ai simplement testé en local avec WAMP et j ai 2h de retard...

      je sais pas comment réglé l heure de wamp moi...
      0
      1. Mon horloge de pc n'a aucun probleme elle affiche l heure normale

        C est quand je fais ce script sur WAMP:

        $heure=date("H");
        $minute=date("i");
        echo "Il est $heure h $minute !";

        Que ça m affiche 18h16 au lieu de 20h16 (heure de mon pc)

        Je comprend pas pourquoi
        0
        1. Je viens de tester comme ça et j'ai le même problème :)
          Je vais regarder à ça.
          PS : Je n'utilise pas Wamp mais Apache + PHP + MySQL installés séparemments (logique sur Linux et avec un serveur en production).
          0
          1. Re

            Oui c est peut etre le script qui est pas bon ...

            J ai tiré ce script d'un livre "PHP pour debutants"

            Et des fois ya des script qui marche mal... meme si c est un tres bon livre avec lequel je m initie a PHP.

            Je doute que ça soi WAMP qui deconne car wamp c est quand meme la plateforme que tout le monde utilise pour developper en php.

            Don merci de m proposer un petit script qui fonctionne pour afficher l heure !! ça doit etre tout bete :) Merci
            0
            1. Ok je vais modifier mon fichier php.ini et je te dirai si ça marche !!

              La je v manger a toute !! Et merci encore !!!!
              0
              1. Pour moi ça marche, je pense que je trouve la solution. il suffit de régler l'heure et surtout de régler de fusion horaire pour votre pays et après régler l'heure
                0
                1. il suffit de cliquer sur la date aprés fusion horaire et regler GMT
                  0
                  1. salut !

                    une petite bidouille !

                    $heure=date("H");
                    $new_heure=intval($heure)+2;
                    $minute=date("i");
                    echo "Il est $new_heure h $minute !";

                    voila !
                    -1
                    1. Et quand il est 23h, on se retrouve à 25h :)
                      0
                    2. ha ouais (rhoooo la honte !!!!)! bon je sort ... =)
                      0
                    3. MERCI!!!!!!!!! Grâce à toi vincent1701786 ça fonctionne bien pour moi!

                      <br/><?php
                       $jour = date('d');
                      $mois = date('m');
                      $annee = date('Y');
                       
                      $heure = date('H');
                      $new_heure=intval($heure)+1;
                      $minute = date('i');
                      
                      echo 'Bonjour ! Nous sommes le ' . $jour . '/' . $mois . '/' . $annee . ' et il est ' . $new_heure. ' h ' . $minute;
                      ?><br/>
                      0
                  2. sa doit venir de l'hebergement.

                    Si l'ordinateur qui heberge ton site et a deux décalage horaire il montrera pas la bonne heure en france et inversement.
                    Je pense qu'il y a un moyen d'ajouter les 2h qu'il manque =)
                    -4