djp1988 Posté 19 Avril 2008 Posté 19 Avril 2008 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 !
TheRec Posté 19 Avril 2008 Posté 19 Avril 2008 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")
djp1988 Posté 20 Avril 2008 Auteur Posté 20 Avril 2008 J'ai essayer le php_ini et ca marche pas, Comment normallement on fait alors pour convertir les horaires ?
TheRec Posté 20 Avril 2008 Posté 20 Avril 2008 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.
djp1988 Posté 20 Avril 2008 Auteur Posté 20 Avril 2008 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.
TheRec Posté 20 Avril 2008 Posté 20 Avril 2008 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.
djp1988 Posté 20 Avril 2008 Auteur Posté 20 Avril 2008 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
djp1988 Posté 20 Avril 2008 Auteur Posté 20 Avril 2008 Ok, j'ai trouvé: SELECT ADDDATE(date, INTERVAL 9 HOUR) AS dateFROM comment_trips :D:D
djp1988 Posté 20 Avril 2008 Auteur Posté 20 Avril 2008 (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 minsFROM comment_trips Modifié 20 Avril 2008 par djp1988
TheRec Posté 21 Avril 2008 Posté 21 Avril 2008 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant