Position actuelle: Accueil> Derniers articles> Le temps d'affichage PHP est-il toujours faux? Guide de fonctionnement pratique pour la définition de fuseaux horaires avec ini_set

Le temps d'affichage PHP est-il toujours faux? Guide de fonctionnement pratique pour la définition de fuseaux horaires avec ini_set

gitbox 2025-09-28

1. Pourquoi le PHP affiche-t-il toujours le mauvais moment?

Le paramètre de fuseau horaire par défaut de PHP est généralement UTC. Ce fuseau horaire est défini pour prendre en charge la normalisation du temps mondial, mais pour de nombreuses applications, en particulier celles ciblant les utilisateurs dans des régions spécifiques, l'utilisation de l'UTC comme fuseau horaire par défaut peut ne pas être approprié. Par exemple, si vous développez une application en Chine (UTC + 8) mais que le serveur est défini sur UTC, il y aura une erreur dans le temps d'affichage.

Habituellement, PHP utilise la fonction date () pour sortir l'heure. Si le fuseau horaire est défini mal, le temps affiché ne sera pas comme prévu.

Exemple:

 <span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span></span>

Si le fuseau horaire n'est pas réglé correctement, cette sortie peut ne pas être comme prévu.

2. Comment définir le fuseau horaire via INI_SET?

Utilisez ini_set () pour définir le fuseau horaire

INI_SET () est une fonction très pratique dans PHP, ce qui permet une modification dynamique des éléments de configuration PHP. Lorsque le programme est en cours d'exécution, vous pouvez utiliser ini_set () pour définir le fuseau horaire, afin que PHP puisse sortir l'heure en fonction du fuseau horaire que vous spécifiez.

Syntaxe pour régler le fuseau horaire:

 <span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'date.timezone'</span></span><span>, </span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);
</span></span>

Date.TimeZone est une directive dans un fichier de configuration PHP qui définit un fuseau horaire. Après avoir modifié le fuseau horaire via ini_set () , PHP affichera l'heure en fonction du fuseau horaire spécifié dans le script actuel.

Exemples de fuseau horaire communs:

  • Asie / Shanghai (heure standard de Chine)

  • America / New_york (New York Timehage, USA)

  • Europe / Londres (heure de Londres)

  • Asie / Tokyo (temps de Tokyo)

Exemple: définissez le fuseau horaire sur Shanghai

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Définissez le fuseau horaire sur Shanghai</span></span><span>
</span><span><span class="hljs-title function_ invoke__">ini_set</span></span><span>(</span><span><span class="hljs-string">'date.timezone'</span></span><span>, </span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>);

</span><span><span class="hljs-comment">// Temps de courant de sortie</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">date</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Le code ci-dessus affichera l'heure actuelle en fonction du fuseau horaire de Shanghai.

3. Comment afficher les paramètres actuels du fuseau horaire?

Vous pouvez utiliser la fonction date_default_timezone_get () pour afficher le fuseau horaire de configuration PHP actuel.

Exemple:

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-title function_ invoke__">date_default_timezone_get</span></span><span>();
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

Si la configuration PHP ne définit pas explicitement le fuseau horaire, le fuseau horaire renvoyé par défaut est généralement UTC.

4. Des questions et des solutions fréquemment posées

Question 1: ini_set () n'est pas valide

Parfois, l'utilisation ini_set () pour définir le fuseau horaire ne semble pas avoir d'effet, peut-être parce que le fuseau horaire par défaut a été défini dans php.ini et ne peut pas être écrasé dans certains environnements. Pour vous assurer que les paramètres du fuseau horaire prennent effet, vous pouvez essayer les méthodes suivantes:

  1. Assurez-vous que la date.TimeZone n'est pas définie dans php.ini .

  2. Vérifiez le journal d'erreur PHP pour voir s'il y a des avertissements ou des messages d'erreur connexes.

Question 2: Support de zone multiples

Si votre application implique des utilisateurs avec plusieurs fuseaux horaires, vous pouvez envisager d'utiliser la classe DateTime et la classe DateTimeZone pour gérer le temps dans différents fuseaux horaires. Ceci est plus flexible que d'utiliser simplement la fonction date () .

Exemple: utilisez la classe DateTime pour gérer les fuseaux horaires

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// Créer un DateTime Objet</span></span><span>
</span><span><span class="hljs-variable">$date</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTime</span></span><span>(</span><span><span class="hljs-string">'now'</span></span><span>, </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>(</span><span><span class="hljs-string">'Asia/Shanghai'</span></span><span>));

</span><span><span class="hljs-comment">// Exporter l&#39;heure de Shanghai</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$date</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">format</span></span><span>(</span><span><span class="hljs-string">'Y-m-d H:i:s'</span></span><span>);
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>

5. Résumé

La définition du fuseau horaire correct est essentielle pour s'assurer que les programmes PHP affichent un temps précis. Avec la fonction ini_set () , vous pouvez facilement définir le fuseau horaire au moment de l'exécution. Surtout en ce qui concerne les utilisateurs de la zone transversale, la définition du fuseau horaire peut raisonnablement éviter les erreurs de temps et s'assurer que le temps que les utilisateurs voient sont toujours exacts.

Le fonctionnement de la définition du fuseau horaire à l'aide d'ini_set () est très simple, mais vous devez faire attention à d'autres paramètres dans la configuration PHP pour vous assurer que les paramètres du fuseau horaire ne sont pas écrasés. Si votre application implique de gérer plusieurs fuseaux horaires, envisagez d'utiliser la classe DateTime pour gérer le temps de manière plus flexible.