Position actuelle: Accueil> Derniers articles> Comment dépanner un temps de temps pour horaire_name_from_abbr à false? Un résumé complet des techniques de débogage pratiques

Comment dépanner un temps de temps pour horaire_name_from_abbr à false? Un résumé complet des techniques de débogage pratiques

gitbox 2025-09-04

2. Raisons courantes pour retourner faux

  1.  <span><span><span class="hljs-title function_ invoke__">timezone_name_from_abbr</span></span><span>(</span><span><span class="hljs-string">"XYZ"</span></span><span>); </span><span><span class="hljs-comment">// false</span></span><span>
    </span></span>

    Il est recommandé de vérifier l'orthographe de l'abréviation ou d'utiliser le DateTimeZone :: listAbReviations () fourni par PHP.

  2. Ambiguïté mais aucun décalage n'est fourni <br> Par exemple, le "CST" correspond à la fois au moment d'Amérique centrale et chinoise. Si $ gmtoffset n'est pas clair, la fonction peut retourner false .

  3. Décalage des paramètres dans l'heure d'été
    Si le paramètre $ ISDST ne correspond pas à la situation réelle, elle peut également entraîner la réussite de la fonction du fuseau horaire correct.

  4. Version PHP ou différence de base de données de fuseau horaire <br> Différentes versions PHP peuvent avoir un support d'abréviation différent. Si FALSE est renvoyé, vous devez également confirmer si la base de données PHP Timezone est à jour.


3. Compétences pratiques de débogage

1. Imprimez une liste des abréviations disponibles

 <span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-title class_">DateTimeZone</span></span><span>::</span><span><span class="hljs-title function_ invoke__">listAbbreviations</span></span><span>());
</span></span>

La sortie peut confirmer si l'abréviation utilisée existe et le décalage correspondant.

2. Clairement passer dans le décalage GMT

 <span><span><span class="hljs-variable">$tz</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_name_from_abbr</span></span><span>(</span><span><span class="hljs-string">"CST"</span></span><span>, </span><span><span class="hljs-number">8</span></span><span>*</span><span><span class="hljs-number">3600</span></span><span>); </span><span><span class="hljs-comment">// correspondre Asia/Shanghai</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$tz</span></span><span>; </span><span><span class="hljs-comment">// Sortir "Asia/Shanghai"</span></span><span>
</span></span>

Utilisez des décalages pour éviter l'ambiguïté.

3. Essayez différents paramètres $ ISDST

 <span><span><span class="hljs-variable">$tz</span></span><span> = </span><span><span class="hljs-title function_ invoke__">timezone_name_from_abbr</span></span><span>(</span><span><span class="hljs-string">"EST"</span></span><span>, -</span><span><span class="hljs-number">5</span></span><span>*</span><span><span class="hljs-number">3600</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>); </span><span><span class="hljs-comment">// Considérations d&#39;heure d&#39;été</span></span><span>
</span></span>

Lorsque la lumière du jour existe un temps, essayer de passer dans 1 peut entraîner le résultat correct.

4. Utilisez DateTimeZone pour remplacer

Si la correspondance d'abréviation est instable, vous pouvez directement utiliser le nom du fuseau horaire complet:

 <span><span><span class="hljs-variable">$dtz</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-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$dtz</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">getName</span></span><span>();
</span></span>

5. Vérifiez la version PHP et la base de données du fuseau horaire

 <span><span>php -r </span><span><span class="hljs-string">'echo timezone_version_get();'</span></span><span>
</span></span>

Assurez-vous que la base de données du fuseau horaire est mise à jour vers les dernières personnes et évitez que certaines abréviations ne soient pas reconnues.