Une bonne pratique de programmation en PHP est de spécifier pour chaque projet le timezone à utiliser. Pourquoi le faire s'il est déjà configuré par défaut sur le serveur à l'installation de PHP ? D'abord, parce que si le client décide de changer d'hébergeur et que celui-ci se trouve dans un fuseau horaire différent, l'affichage des dates risque de ne plus correspondre à la réalité de l'application. Ensuite, parce que le serveur peut ne pas être dédié, c'est-à-dire qu'il peut être partagé entre plus d'un client qui ne nécessitent pas la même configuration.
Par défaut, mon serveur de développement possède le timezone "America/New_York". Par un pur hasard pour mes besoins, c'est exactement le même que celui de Montréal. On peut connaître la configuration de plusieurs façons :
- par la fonction phpinfo(), dans la section Date : Default timezone.
- par la fonction date_default_timezone_get() qui retourne la chaine de caractère "America/New_York"
- dans certains cas, dans le fichier php.ini, dans la section [Date], à la ligne "date.timezone". Cependant, si cette valeur n'a pas été écrasée à l'installation du serveur, la ligne risque d'être commentée et non interprétée (avec un ; devant)
date.timezone = America/Montreal
Vous pouvez consulter la liste des timezones supportés ici.
À l'intérieur d'un projet, on peut écraser cette configuration en tout temps, soit avec la fonction date_default_timezone_set() ou ini_set().
date_default_timezone_set('America/Montreal');En forçant la configuration dans un fichier inclut globalement au projet (donc un require_once dans toutes les pages ou par auto_prepend_file), on s'assure qu'il n'y aura pas de mauvaises surprises dans le futur.
# ou
ini_set('date.timezone', 'America/Montreal');
C'est bien de vouloir spécifier le timezone, mais ça peut être ordinaire de placer cette instruction PHP au début de toutes les pages. Si vous n'avez pas besoin de la charger dynamiquement selon l'emplacement de l'utilisateur, l'alternative est d'y aller avec le fichier .htaccess. Il suffit d'ajouter la ligne suivante :
php_value date.timezone America/Montreal
Vous pourrez tester le changement d'heure selon le timezone avec la ligne suivante :
# format 2009-08-02 03:22:20 PMÀ noter que si les trois méthodes sont utilisées, le serveur Apache chargera dans l'ordre le fichier php.ini en premier, ensuite il écrasera la configuration par ce qui est indiqué dans .htaccess et il terminera par la configuration server-side en PHP. La dernière configuration trouvée sera celle retenue.
echo date('Y-m-d h:i:s A');
merci pour ce post, il ma aidé à changer l'heure de mon hébergement partagé localisé au canada.
Je commencais à desespérer
Merci pour ce post !
Un grand merci à toi !
Tu me sauves la vie <3<3
mon serveur était héberger à l'étranger -,-"
Mais grâce à toi c'est plus un problème ;)
merci