Outils pour utilisateurs

Outils du site


devweb:php:mysql_timezone (lu 13813 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
devweb:php:mysql_timezone [31-01-2008 14:07]
edmc73 créée
devweb:php:mysql_timezone [20-08-2014 11:23] (Version actuelle)
edmc73 Page moved from edmc73:dev:mysql_timezone to devweb:php:mysql_timezone
Ligne 1: Ligne 1:
 +===== Mysql et les timezones =====
 +
 +
 Voilà, au bout d'une heure de travail au bureau, je suis en mesure de transformer ce topic en mini tuto :-) Voilà, au bout d'une heure de travail au bureau, je suis en mesure de transformer ce topic en mini tuto :-)
 +
    
 En fait, il faut savoir qu'un dossier sur les fuseaux horaires existe sur les OS Linux et MacOS par défaut, et qu'il se trouve souvent dans /usr/share/zoneinfo/. Il faut aussi savoir qu'il existe quelques scripts s'exécutant dans mysql, et quelques autres hors de mysql (pour les OS précités, je ne sais pas encore ce qu'il en est pour windows).   En fait, il faut savoir qu'un dossier sur les fuseaux horaires existe sur les OS Linux et MacOS par défaut, et qu'il se trouve souvent dans /usr/share/zoneinfo/. Il faut aussi savoir qu'il existe quelques scripts s'exécutant dans mysql, et quelques autres hors de mysql (pour les OS précités, je ne sais pas encore ce qu'il en est pour windows).  
 +
 On peut maintenant remplir les tables concernant les fuseaux horaires de MySQL.   On peut maintenant remplir les tables concernant les fuseaux horaires de MySQL.  
 +
    
 il faut taper, dans un SHELL: il faut taper, dans un SHELL:
-''mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root --password mysql''+ 
 +<code>mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root --password mysql</code> 
 Cette commande remplira les tables time_zone et assimilées de la database mysql (raison du dernier mysql de cette ligne). Cette commande remplira les tables time_zone et assimilées de la database mysql (raison du dernier mysql de cette ligne).
 +
    
 Ensuite, connaître les noms des fuseaux horaires, la syntaxe de la commande convert_tz() and enjoy! Ensuite, connaître les noms des fuseaux horaires, la syntaxe de la commande convert_tz() and enjoy!
 +
 exemple (pour vérifier si ça a fonctionné comme attendu):   exemple (pour vérifier si ça a fonctionné comme attendu):  
    
-''SELECT CONVERT_TZ('2007-10-27 02:00:00','UTC','CET');+<code>SELECT CONVERT_TZ('2007-10-27 02:00:00','UTC','CET');
 retour:   retour:  
-2007-10-27 04:00:00''+2007-10-27 04:00:00</code>
    
-''SELECT CONVERT_TZ('2007-10-28 02:00:00','UTC','CET');+<code>SELECT CONVERT_TZ('2007-10-28 02:00:00','UTC','CET');
 retour: retour:
-2007-10-28 03:00:00''+2007-10-28 03:00:00</code>
    
 et hop, je peux imprimer mon calendrier ad vitam eternam!   et hop, je peux imprimer mon calendrier ad vitam eternam!  
 +
 (à moins qu'un clown ne vienne changer les règles de changement d'horaires (comme Georges cette année pour les états-unis et le Canada :D)) (à moins qu'un clown ne vienne changer les règles de changement d'horaires (comme Georges cette année pour les états-unis et le Canada :D))
    
 +===== PHP et les timezones =====
 +
 +Pour définir un fuseau horaire, il faut définir la variable d'environnement **PHP_TZ**
 +
 +Pour cela ajouter la ligne :
 +
 +<code php>
 +putenv("PHP_TZ=Europe/Paris");
 +</code>
 +
 +
 +en pratique, pour afficher une date suivant un fuseau horaire défini.
 +
 +<code php>
 +<?
 +date_default_timezone_set("Europe/Paris");
 +echo "heure de paris : ".date("Y-m-d H:i")."\n";
 +date_default_timezone_set("Japan");
 +echo "heure de Tokio: ".date("Y-m-d H:i")."\n";
 +?>
 +</code>
 +
 +<note>
 +La liste de tous les fuseaux se trouve dans /usr/share/zoneinfo/
 +</note>
devweb/php/mysql_timezone.1201784840.txt.gz · Dernière modification: 04-04-2013 22:05 (modification externe)