Maison > développement back-end > Problème PHP > Pourquoi php doit-il définir le fuseau horaire ?

Pourquoi php doit-il définir le fuseau horaire ?

青灯夜游
Libérer: 2023-03-11 16:36:02
original
2476 Les gens l'ont consulté

Depuis que PHP5.0 a réécrit la fonction data(), la fonction date et heure actuelle est inférieure de 8 heures à l'heure du système ; et le paramètre par défaut du langage PHP est l'heure de Greenwich standard (c'est-à-dire que le fuseau horaire zéro est utilisé). ), donc pour obtenir l'heure locale actuelle, vous devez modifier le paramètre de fuseau horaire dans le langage PHP.

Pourquoi php doit-il définir le fuseau horaire ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, PHP version 7.1, ordinateur DELL G3

Le temps est essentiel dans la vie, et il en est de même en PHP Il faut parfois stocker le temps pour enregistrer quelque chose ou. affiché dans le navigateur.

En PHP, la date et l'heure sont obtenues via les fonctions de date et d'heure. Les fonctions de date et d'heure dépendent du réglage de l'heure du serveur. Le réglage de l'heure du serveur est par défaut l'heure de Greenwich (zéro fuseau horaire). Si l'heure n'est pas spécifiquement définie sur un fuseau horaire spécifique, l'heure obtenue via les fonctions PHP pertinentes sera. être l'heure du fuseau horaire zéro. C'est 8 heures de moins que l'heure de Pékin.

Division des fuseaux horaires

Le monde est divisé en 24 fuseaux horaires. Chaque fuseau horaire a sa propre heure locale. L'heure locale de chaque fuseau horaire diffère de 1 à 23 heures en même temps. , l'heure locale de Londres, Royaume-Uni et l'heure locale de Pékin. Le décalage horaire est de 8 heures.

Dans le domaine des communications radio internationales, une heure unifiée est utilisée, appelée Temps universel coordonné (UTC). UTC est la même que le temps moyen de Greenwich (GMT).

Réglage du fuseau horaire en PHP

En raison de la réécriture de la fonction data() en PHP5.0, la fonction date et heure actuelle est inférieure de 8 heures à l'heure du système. Le paramètre par défaut du langage PHP est l'heure standard de Greenwich (c'est-à-dire que le fuseau horaire zéro est utilisé), donc pour obtenir l'heure locale actuelle, vous devez modifier le paramètre de fuseau horaire dans le langage PHP.

Il existe trois façons de définir le fuseau horaire en PHP. Présentons chacune d'elles ci-dessous.

1) Défini dans le fichier de configuration

Le fichier de configuration de PHP est le fichier php.ini dans le répertoire d'installation de PHP, recherchez-le et ouvrez-le. Recherchez ensuite date.timezone dans le fichier,

et le ;date.timezone = devant ; a la même fonction que le // en PHP. Ils signifient tous les deux des commentaires. Ici, nous devons supprimer ce ; et remplir l'identifiant de fuseau horaire correspondant après le =. dans cette phrase. Comme indiqué ci-dessous :

[Date]
; Defines the default timezone used by the date functions
; http://php.net/date.timezone
date.timezone = Asia/Shangha
Copier après la connexion

Certains identifiants de fuseau horaire couramment utilisés et leurs significations :

  • Asie/Shanghai —— Shanghai

  • Asie/Chongqing —— Chongqing

  • Asie/Urumqi —— Urumqi

  • Asie/Hong_Kong —— Hong Kong

  • Asie/Macao —— Macao

  • Asie/Taipei —— Taipei

  • Asie/Singapour —— Singapour

  • RPC —— Chine fuseau horaire

Conseils : Si vous êtes en Chine, nous pouvons définir le fuseau horaire sur « Asie/Shanghai ou RPC ». N'oubliez pas de redémarrer le serveur une fois le réglage réussi !

2) Utilisez la fonction ini_set() pour définir le fuseau horaire

La fonction ini_set() en PHP peut définir la valeur de l'option de configuration spécifiée. Cette option de configuration conservera la nouvelle valeur lorsque le script est en cours d'exécution. , et sera restauré à la fin du script. Le format de syntaxe de la fonction est le suivant :

ini_set($varname, $newvalue)
Copier après la connexion

où $varname est l'option de configuration à modifier, et $newvalue est la nouvelle valeur de l'option de configuration.

Conseils : La fonction ini_set() ne peut pas modifier toutes les options de configuration. Vous pouvez consulter les options de configuration qui peuvent être modifiées en visitant "https://www.php.net/manual/zh/ini.list.php".

【Exemple】Utilisez la fonction ini_set() pour définir le fuseau horaire.

<?php
header("Content-type:text/html;charset=utf-8");
ini_set(&#39;date.timezone&#39;, &#39;GMT&#39;);
echo &#39;当前的格林尼治时间为:&#39;.date(&#39;Y-m-d H:i:s&#39;,time()).&#39;<br>&#39;;
ini_set(&#39;date.timezone&#39;, &#39;Asia/Urumqi&#39;);
echo &#39;乌鲁木齐的当前时间为:&#39;.date(&#39;Y-m-d H:i:s&#39;,time()).&#39;<br>&#39;;
ini_set(&#39;date.timezone&#39;, &#39;Asia/Shanghai&#39;);
echo &#39;上海的当前时间为:&#39;.date(&#39;Y-m-d H:i:s&#39;,time());
?>
Copier après la connexion

Les résultats en cours sont les suivants :

当前的格林尼治时间为:2021-07-16 12:25:11
乌鲁木齐的当前时间为:2021-07-16 20:25:11
上海的当前时间为:2021-07-16 20:25:11
Copier après la connexion

3) Utilisez la fonction date_default_timezone_set() pour définir le fuseau horaire

La fonction date_default_timezone_set() en PHP peut définir un fuseau horaire par défaut pour toutes les fonctions d'heure et de date dans le script. Le format de syntaxe est le suivant :

date_default_timezone_set($timezone_identifier)
Copier après la connexion

Le paramètre $timezone_identifier est l'identifiant du fuseau horaire, tel que UTC (Greenwich Mean Time) ou Europe/Lisbon (Portugal).

Depuis PHP5.1.0 (la fonction date et heure a été réécrite dans cette version), si le fuseau horaire est illégal, chaque appel à la fonction date et heure générera un message d'erreur de niveau E_NOTICE si le paramètre système ou l'environnement TZ. variable est utilisée, des messages de niveau E_STRICT sont également générés.

【Exemple】Utilisez la fonction date_default_timezone_set() pour définir le fuseau horaire.

<?php
header("Content-type:text/html;charset=utf-8");
date_default_timezone_set(&#39;Asia/Urumqi&#39;);
echo &#39;乌鲁木齐的当前时间为:&#39;.date(&#39;Y-m-d H:i:s&#39;,time()).&#39;<br>&#39;;
date_default_timezone_set(&#39;Europe/Lisbon&#39;);
echo &#39;葡萄牙的当前时间为:&#39;.date(&#39;Y-m-d H:i:s&#39;,time()).&#39;<br>&#39;;
date_default_timezone_set(&#39;Asia/Shanghai&#39;);
echo &#39;上海的当前时间为:&#39;.date(&#39;Y-m-d H:i:s&#39;,time());
?>
Copier après la connexion

Les résultats en cours d'exécution sont les suivants :

乌鲁木齐的当前时间为:2021-07-16 20:25:28
葡萄牙的当前时间为:2021-07-16 13:25:28
上海的当前时间为:2021-07-16 20:25:28
Copier après la connexion

Apprentissage recommandé : "Tutoriel vidéo PHP"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal