web-dev-qa-db-fra.com

Impossible de définir le bon moment dans les modèles admin et frontend

Quand je lance un simple fichier php appelé test.php (placé à la racine de l'installation de wp) qui contient quelque chose comme ça:

<?php echo date('H:i:s'); ?>

Le résultat est correct: 15:30:00 et le fuseau horaire est également défini correctement sur Europe/Prague, qui correspond au temps UTC + 2.

Cependant, si je place la même ligne dans mon exemple, pied de page ou barre latérale ou même fichier index de mon modèle que le résultat est 13:30:00 qui est le temps UTC.

La même chose dans mon plugin personnalisé dans WP admin. il est 2 heures de retard.

L'heure dans les options d'administration est correctement définie sur UTC + 2.

Ce qui est amusant, c'est que si je crée un nouveau message ou une nouvelle page, l'heure est correcte 15:30:00. Je ne comprends pas.

Une idée pourquoi cela se produit?

J'ai la dernière installation fraîche WP. 3.5.1 Version CZ sans aucun plugin installé.

UPDATE:

J'ai essayé d'utiliser WP function date_i18n () comme: <?php echo date_i18n('H:i:s'); ?> et il fonctionne comme prévu.

Cependant: <?php echo date('H:i:s'); ?> et cela ne fonctionne toujours pas correctement. Mais en dehors de wordpress date() fonctionne correctement.

Pourquoi donc? Pourquoi wordpress bousille la fonction date()?

2
Derfder

WordPress utilise GMT. La seule façon de contourner ce problème consiste à déclarer un nouveau fuseau horaire après l'en-tête à utiliser à vos propres fins. Un peu pénible.

Voir aussi cette réponse: Comment obtenir le réglage du fuseau horaire de WordPress?

2
GhostToast

La réponse acceptée ici n’est pas la meilleure approche. Vous devez utiliser WordPress ' current_time() à la place. La modification du fuseau horaire au moment de l'exécution peut avoir des conséquences inattendues, car WordPress le normalise (et attend) à l'UTC.

Si vous devez convertir une date UTC existante dans votre fuseau horaire local, voir Conversion des horodatages en heure locale .

0
John Blackbourn