Lors du développement d'applications PHP, les informations de fuseau horaire de traitement sont une exigence commune. PHP fournit de nombreuses fonctions pour le traitement des fuseaux horaires, où la fonction FimeZone_Location_get est utilisée pour obtenir des informations de localisation pour un fuseau horaire spécifié. Bien qu'il se comporte généralement de manière stable, vous pouvez parfois rencontrer des situations où la fonction renvoie une erreur. Dans cet article, nous explorerons les raisons courantes pour lesquelles la fonction Timezone_Location_get renvoie des erreurs et partager quelques conseils pratiques de débogage pour vous aider à résoudre rapidement les problèmes.
Timezone_Location_get est une fonction utilisée pour obtenir l'emplacement du fuseau horaire. Sa syntaxe de base est la suivante:
<span><span><span class="hljs-title function_ invoke__">timezone_location_get</span></span><span>(DateTimeZone </span><span><span class="hljs-variable">$object</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>|</span><span><span class="hljs-literal">false</span></span><span>
</span></span>Cette fonction accepte un objet DateTimeZone en tant que paramètre et renvoie un tableau associatif contenant les informations de localisation du fuseau horaire, tels que country_code , latitude , longitude , etc. Si les informations ne peuvent pas être récupérées, la fonction renvoie false .
Lorsque vous appelez Timezone_Location_get , vous pouvez rencontrer les erreurs courantes suivantes:
La fonction timezone_location_get dépend de l'objet DateTimeZone entrant. Si cet objet n'est pas valide ou n'est pas initialisé correctement, la fonction renvoie une erreur. Assurez-vous que vos objets de fuseau horaire sont valides, par exemple:
<span><span><span class="hljs-variable">$timezone</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">'America/New_York'</span></span><span>);
</span></span>Si vous utilisez un identifiant de fuseau horaire invalide, l'objet DateTimeZone ne sera pas initialisé correctement, ce qui ne fonctionne pas correctement à la fonction Timezone_Location_get .
Timezone_Location_get dépend des informations de localisation fournies par la base de données du fuseau horaire. Dans certains cas, les données de fuseau horaire peuvent être incomplètes ou manquantes, en particulier dans les anciennes versions de PHP. Cela peut entraîner le retour de faux .
La base de données du fuseau horaire utilisé par PHP (généralement la base de données du fuseau horaire IANA) doit être à jour. Si la base de données du fuseau horaire dans votre environnement PHP est obsolète ou non configurée correctement, cette fonction peut également entraîner le fonctionnement de la fonction correctement.
La gestion des erreurs de PHP peut ne pas vérifier correctement le faux renvoyé, ce qui peut facilement inciter les développeurs à ignorer les erreurs potentielles. Il est préférable de faire des erreurs de vérification après l'appel Timezone_Location_get et de vous assurer que le message d'erreur est sorti.
<span><span><span class="hljs-variable">$timezone</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-variable">$location</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_location_get</span></span><span>(</span><span><span class="hljs-variable">$timezone</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$location</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Impossible d'obtenir des informations de localisation du fuseau horaire。"</span></span><span>;
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$location</span></span><span>);
}
</span></span>Tout d'abord, confirmez que l'identifiant de fuseau horaire transmis au constructeur DateTimeZone est valide. Tous les identificateurs de fuseau horaire valides peuvent être répertoriés via la fonction DateTimeZone :: ListIdentifiants pour s'assurer que vos identificateurs y sont.
<span><span><span class="hljs-variable">$valid_timezones</span></span><span> = </span><span><span class="hljs-title class_">DateTimeZone</span></span><span>::</span><span><span class="hljs-title function_ invoke__">listIdentifiers</span></span><span>();
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-title function_ invoke__">in_array</span></span><span>(</span><span><span class="hljs-string">'America/New_York'</span></span><span>, </span><span><span class="hljs-variable">$valid_timezones</span></span><span>)) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Identifiant de fuseau horaire non valide!"</span></span><span>;
}
</span></span>Assurez-vous que la base de données du fuseau horaire est correctement configurée dans votre environnement PHP. Vous pouvez vérifier les paramètres du fuseau horaire actuels via le code suivant:
<span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Fuseau horaire actuel:'</span></span><span> . </span><span><span class="hljs-title function_ invoke__">date_default_timezone_get</span></span><span>();
</span></span>De plus, la mise à jour de la base de données du fuseau horaire PHP est la clé pour garantir la précision des informations de fuseau horaire. Vous pouvez résoudre les problèmes obsolètes en améliorant le PHP ou en mettant à jour manuellement la base de données du fuseau horaire.
Assurez-vous toujours que votre code gère correctement les valeurs de rendement . Plusieurs fois, lorsque Timezone_Location_get renvoie false , c'est parce que les détails du fuseau horaire ne peuvent pas être obtenus. En améliorant la gestion des erreurs, cela peut vous aider à localiser les problèmes plus clairement.
<span><span><span class="hljs-variable">$timezone</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/Tokyo'</span></span><span>);
</span><span><span class="hljs-variable">$location</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_location_get</span></span><span>(</span><span><span class="hljs-variable">$timezone</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$location</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-title function_ invoke__">error_log</span></span><span>(</span><span><span class="hljs-string">"Impossible d'obtenir des informations de localisation du fuseau horaire: "</span></span><span> . </span><span><span class="hljs-variable">$timezone</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getName</span></span><span>());
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$location</span></span><span>);
}
</span></span>Bien que Timezone_Location_get ne lance pas les exceptions en soi, si vous utilisez des paramètres de fuseau horaire plus complexes ou si vous vous appuyez sur des bibliothèques externes, il est préférable d'utiliser l'instruction TRY-Catch pour assurer des exceptions potentielles pour éviter les accidents de programme.
<span><span><span class="hljs-keyword">try</span></span><span> {
</span><span><span class="hljs-variable">$timezone</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">'Europe/London'</span></span><span>);
</span><span><span class="hljs-variable">$location</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_location_get</span></span><span>(</span><span><span class="hljs-variable">$timezone</span></span><span>);
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$location</span></span><span> === </span><span><span class="hljs-literal">false</span></span><span>) {
</span><span><span class="hljs-keyword">throw</span></span><span> </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-built_in">Exception</span></span><span>(</span><span><span class="hljs-string">'Impossible d'obtenir l'emplacement du fuseau horaire'</span></span><span>);
}
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$location</span></span><span>);
} </span><span><span class="hljs-keyword">catch</span></span><span> (</span><span><span class="hljs-built_in">Exception</span></span><span> </span><span><span class="hljs-variable">$e</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">'Une erreur s'est produite: '</span></span><span> . </span><span><span class="hljs-variable">$e</span></span><span>-></span><span><span class="hljs-title function_ invoke__">getMessage</span></span><span>();
}
</span></span>La fonction Timezone_Location_get a été introduite dans PHP 5.5.0, alors assurez-vous que vous utilisez PHP 5.5.0 ou version ultérieure. Si votre version PHP est trop faible, vous ne pourrez peut-être pas utiliser cette fonction.
Vérifiez la version PHP en exécutant la commande suivante:
<span><span>php -v
</span></span>Timezone_Location_get est une fonction PHP très utile pour obtenir les informations de localisation du fuseau horaire. Cependant, lorsqu'une erreur se produit, nous devons d'abord vérifier la validité de l'identifiant de fuseau horaire, nous assurer que le PHP est configuré correctement et gérer les erreurs de manière appropriée. Grâce aux techniques de débogage ci-dessus, vous devriez être en mesure de localiser et de résoudre efficacement le problème des erreurs de retour de fonction.