Aller au contenu

date_default_timezone_set


Sujets conseillés

Posté

Bonjour, mis en place un systeme de commentataires sur mon site, on peut laisser des com, et il s'affiche le message et l'heure a laquel on l'a mis, mais cette heure est l'heure du serveur qui se trouve aux USA

donc j'ai mis ca dans mon php:

date_default_timezone_set("Europe/Paris");

Mais les heures restent identique,

j'ai PHP 5 au passage !

Posté

Bonsoir,

Étonnant. Que te donne la commande date_default_timezone_get après avoir utilisé date_default_timezone_set ? Est-ce que date_default_timezone_set retourne bien la valeur booléenne true après l'appel ?

Les dates dont tu parles ne sont-elles pas stockées dans la base de données avec l'ancien fuseau horaire ?

À tout hasard, tu peux toujours essayer de modifier la valeur date.timezone soit par un fichier .htaccess :

php_value date.timezone Europe/Paris

Ou avec ini_set :

ini_set('date.timezone',"Europe/Paris")

Posté

On peut sans problème utiliser la fonction date_default_timezone_set. Si tu voulais bien répondre au quelques question ci-dessus ça pourrait faire avancer le problème sans doute.

Posté

Que te donne la commande date_default_timezone_get après avoir utilisé date_default_timezone_set ?

---> Ca ne me fais rien j'ai essayer date_default_timezone_get apres la ligne ou j'ai mis date_default_timezone_set("Europe/Paris"); mais rien n'a changer

Est-ce que date_default_timezone_set retourne bien la valeur booléenne true après l'appel ?

---> Oui j'ai eu "1"

Les dates dont tu parles ne sont-elles pas stockées dans la base de données avec l'ancien fuseau horaire ?

---> Je ne sais pas là sur la base de donnés j'ai l'heure américaine.

Posté

Dans le cadre de PHP, lorsque tu utilises la fonction date_default_timezone_set, tu changes le fuseau horaire pour l'exécution du script courant, donc lorsque tu utilisera les autres fonction permettant par exemple de retourner une date tu obtiendras la date avec le fuseau horaire souhaité.

Pour tester si la date (sous PHP) est changée tu peux regarder les résultats de ce petit script :

  echo 'Heure du serveur, par défaut ('.date_default_timezone_get().') : '.date('r').'<br/>';
if(date_default_timezone_set('Europe/Paris')) {
echo 'Fuseau horaire changé pour '.date_default_timezone_get().'. Heure à ce fuseau : '.date('r').'<br/>';
} else {
echo 'Le fuseau horaire n\'a pas pu être changé.<br/>';
}

Ce n'est qu'une exemple, pour te montrer qu'au premier appel de date, le fuseau horaire est celui du serveur par défaut, le deuxième est celui modifié pour toute la durée d'exécution du script. Mais cela ne permet absolument pas de changer des date déjà enregistrées dans ta base de données.

Si ton fuseau horaire était faux lorsque tu as enregistré tes données dans la base de données, lorsque tu les liras elle seront fausses, tu devras faire la correction soit à l'affichage, soit directement dans la base de données (ce qui serait mieux, à toi de voir quels enregistrements doivent être changés). S'il s'agit d'une base de données MySQL et que tu as bien un champ DATETIME/TIMESTAMP, tu peux utiliser la fonction CONVERT_TZ.

Posté

Ca me plait bien la fonction CONVERT_TZ, cependant je ne comprends pas pourquoi j'ai un résultat NULL

avec cette requette:

SELECT CONVERT_TZ('date','PST','CET') AS date 
FROM comment_trips;

ou le champ date dans la table comment_trips est de type 'datetime'

Okay, je viens de comprendre, alors il faut distinguer deux choses, la date lorsqu'on l'insere directement avec PHP sous la forme

print date ('l F jS Y');

Et puis les dates lorsque on les insére à partir de la base de donnée, j'avais les 2 cas comme problème, mais avec votre script j'ai pu convertir les dates que j'insérer directement.

Mais il faut que je convertis les dates et heures d'un champ 'date' de la base de donnees

Posté (modifié)

Cependant, j'ai encore une question, alors j'ai ca une fois que je convertis l'heure etc...: "2008-04-18 09:39:09"

Mais c'est très americaine !

Je voudrais cela: 18/04/2007 09:39:09

Peut etre meme: 18/04/2007 9h39 -> sans le secondes et avec un 'h'

Comment puis je manipuler les données ?

Il doit bien sur avoir une solution plus simple que:

SELECT DAYOFMONTH(ADDDATE(date, INTERVAL 9 HOUR)) AS day, MONTH(ADDDATE(date, INTERVAL 9 HOUR)) AS month, YEAR(ADDDATE(date, INTERVAL 9 HOUR)) AS year, HOUR(ADDDATE(date, INTERVAL 9 HOUR)) AS hour, MINUTE(ADDDATE(date, INTERVAL 9 HOUR)) AS mins
FROM comment_trips

Modifié par djp1988
Posté

Tu peux utiliser la fonction DATE_FORMAT. Ou le faire dans ton code PHP avec la fonction date.

SELECT DATE_FORMAT(ADDDATE(date, INTERVAL 9 HOUR),"%d/%m/%Y %Hh%i") AS date FROM comment_trips

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...