2010-04-24 7 views
1

Dans mon installation drupal je peux obtenir le décalage par rapport à UTC en quelques secondes pour le fuseau horaire I spécifié dans le panneau d'administration à l'aideDrupal information fuseau horaire

variable_get('date_default_timezone', 0) 

Cependant, maintenant que nous avons d'été-temps, le temps Je reçois est toujours éteint par une heure. Existe-t-il un moyen de récupérer la chaîne de fuseau horaire de Drupal, comme "Europe/Berlin" par exemple?

La raison en est que je dois utiliser avec Zend_Date Zend Framework, mais Drupal ne définit pas le fuseau horaire par défaut de PHP, comme

echo date_default_timezone_get(); 

me donne System/Localtime.

Répondre

2

J'ai trouvé la solution:

date_default_timezone n'est définie, lorsque les fuseaux horaires de l'utilisateur personnalisés sont désactivés dans le panneau d'administration! Assurez-vous de cocher cette option.

2

La variable date_default_timezone doit toujours être droite. Par exemple, en France, il devrait être de 3600 en hiver (UTC + 1) et de 7200 en été (UTC + 2).


La chose est la valeur qu'il contient ne changera pas par magie: il y a un crochet cron appelé date_timezone_cron qui doit être exécuté afin de changer que quand il est nécessaire (citant):

Mettez à jour le décalage de fuseau horaire du site lorsque cron s'exécute.
Ceci est pour s'assurer que les modules qui reposent sur le fuseau horaire ont des informations à jour sur le processus .


Après cela, si vous avez besoin du nom du fuseau horaire actuel - celui sélectionné dans la section admin - il y a probablement une autre ligne dans les variable tables pour cela.

Vous pouvez le trouver avec un SQL comme:

select * 
from variable 
where name like '%timezone%'; 

Il sera très probablement revenir plusieurs lignes; mais l'un d'eux devrait être le choix évident. À partir du code source date_timezone.module, je parierais sur une variable appelée date_default_timezone_name.