Aller au contenu

date_default_timezone_set


djp1988

Sujets conseillés

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 !

Lien vers le commentaire
Partager sur d’autres sites

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")

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

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



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