Afficher l'heure francaise depuis américaine

Fermé
pols12 Messages postés 1143 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 31 juillet 2019 - 15 août 2010 à 18:11
pols12 Messages postés 1143 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 31 juillet 2019 - 10 sept. 2010 à 19:25
Bonjour!!
Mon problème est très simple, la solution aussi, d'ailleur. Mais je galère. Google m'indique des tonnes de solutions, toutes différentes, et ou trop compliqué ou ne marche pas.

Je m'explique:
J'ai un script de mini-chat, très basique, avec 2 pages:
4.php // formulaire+lecture des messages
poste.php // ecriture des messages dans la BDD

Le forumulaire de 4.php contient:
. . un champ pseudo et un champ message.

La BDD contient unetable chat qui contient:
. . un champ ID //Pour l'ordre des messages
. . un champ pseudo //qui contient les pseudos
. . un champ message //qui contient les messages
. . un champ date_heure de type datetime //qui contient la date d'enrgistrement des messages

Et donc, ma requete sql qui envoi les messages (dans poste.php), c'est:
mysql_query("INSERT INTO chat VALUES('', '$pseudo', '$message', NOW())")or die ('Erreur 67: '.mysql_error());


Mais mon serveur est américain. La fonction NOW, enregistre donc l'heure américaine.
Ca, j'aimerais ne pas changer.
J'aimerais juste, afficher l'heure francaise, et non enregistrer l'heure francaise.
Donc, dans 4.php, je voudrais afficher l'heure francaise qui correspond à celle enregistré américaine.
Code sql de la récupération:
mysql_query("SELECT *, DATE_FORMAT(date_heure, 'le %d/%m/%y à %H:%i:%s') AS date_heure FROM chat ORDER BY ID DESC LIMIT 0,50");


Donc, dans 4.php, je voudrais afficher l'heure francaise qui correspond à celle enregistré américaine.

Merci de votre aide!





13 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
16 août 2010 à 21:05
jettes un oeil sur ce site tu dois pouvoir en tirer une solution

http://julien-pauli.developpez.com/tutoriels/php/dates/#LIV-B
0
pols12 Messages postés 1143 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 31 juillet 2019 119
17 août 2010 à 11:55
Trop compliqué pour moi: je ne maitrise pas la programation orienté en objet, désolé.
N'y a t il pas une fonction php?
Merci!
pols12
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
18 août 2010 à 19:26
essayes comme ça:

$reponse=mysql_query("SELECT *, DATE_FORMAT(date_heure, 'le %d/%m/%y à %H:%i:%s') AS date_heure FROM chat ORDER BY ID DESC LIMIT 0,50");
//par exemple si tu recupères la date de la BDD ainsi 
$donnees=mysql_fetch_assoc($reponse);
$date_US=$donnees['date_heure'];

// affectation directe d'un fuseau précis (autre que celui par défaut) à une date
$date_fr = new DateTime($date_US,new DateTimeZone('Europe/Paris'));
echo $date_fr->format("d/m/Y à H\hi:s"); // 03/10/2007 à 19h39:53
0
pols12 Messages postés 1143 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 31 juillet 2019 119
26 août 2010 à 11:07
Yuko ->Je n'y tiens aps vraiment... =D
Alin_42 ->Si je laisse le DATE_FORMAT dans le SELECT, j'ai un message d'erreur.
Si je l'enlève, j'ai plus d'erreur, mais le résultat n'est pas là. :(
Tu veux que je te recopies le message d'erreur? :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
30 août 2010 à 13:34
j'avais pas vu qu'il trainait un "le " devant le format

essayes avec:
DATE_FORMAT(date_heure, '%d/%m/%Y %H:%i:%s')
0
pols12 Messages postés 1143 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 31 juillet 2019 119
30 août 2010 à 19:15
Ca ne change rien...
erreur:
Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct() [<a href='datetime.--construct'>datetime.--construct</a>]: Failed to parse time string (23/08/2010 18:01:05) at position 0 (2): Unexpected character' in C:\Documents and Settings\xp\Bureau\Paul\Internet\wamp\www\page mot de passe\4.php:99 Stack trace: #0 C:\Documents and Settings\xp\Bureau\Paul\Internet\wamp\www\page mot de passe\4.php(99): DateTime->__construct('23/08/2010 18:0...', Object(DateTimeZone)) #1 {main} thrown in C:\Documents and Settings\xp\Bureau\Paul\Internet\wamp\www\page mot de passe\4.php on line 99
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
Modifié par Alain_42 le 30/08/2010 à 20:31
ha le message d'erreur se précise, et comme ça:

DATE_FORMAT(date_heure, '%Y-%m-%dT%H:%i:%s+0000')
0
pols12 Messages postés 1143 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 31 juillet 2019 119
1 sept. 2010 à 18:11
Ha, plus d'erreur!
Mais c'est comme quand j'enlevais le date format dans la requete select: ca ne change rien. :(
Je m'explique: si je change cette ligne:
$timezone = new DateTimeZone('Europe/Paris');

Par cette ligne:
$timezone = new DateTimeZone('America/New_York');

Dans les deux cas, il m'affiche:
01/09/2010 à 18h00:17


Pourquoi?
Je redonne mon code, au cas ou:
$reponse = mysql_query("SELECT *, DATE_FORMAT(date_heure, '%Y-%m-%dT%H:%i:%s+0000') AS date_heure FROM chat ORDER BY ID DESC LIMIT 0,50");

$don_date=mysql_fetch_assoc($reponse);
$date_us=$don_date['date_heure'];
$timezone = new DateTimeZone('Europe/Paris'); //America/New_York
$date_fr = new DateTime($date_us, $timezone);
$date_ok = $date_fr->format("d/m/Y à H\hi:s"); // 31/12/20010 à 24h59:59
echo $date_ok;

0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
1 sept. 2010 à 18:27
reponse = mysql_query("SELECT *, DATE_FORMAT(date_heure, '%Y-%m-%dT%H:%i:%s+0000') AS date_heure_formatee FROM chat ORDER BY ID DESC LIMIT 0,50");
//le nom du champ date_heure et le nom de l'alias estait le même je pense qu'il y avait conflit ??
$don_date=mysql_fetch_assoc($reponse);
$date_us=$don_date['date_heure_formatee'];
$timezone = new DateTimeZone('Europe/Paris'); //America/New_York
$date_fr = new DateTime($date_us, $timezone);
$date_ok = $date_fr->format("d/m/Y à H\hi:s"); // 31/12/20010 à 24h59:59
echo $date_ok;
0
pols12 Messages postés 1143 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 31 juillet 2019 119
5 sept. 2010 à 18:19
C'était pas ca!
J'ai beau changer de fuseau horraire (l'objet contenu dans la variable $timezone); rien ne se passe! :(
Une idée? :')
Je commence à désespérer! :°-(
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
8 sept. 2010 à 17:34
je t'ai envoyé un MP vas voir
0
pols12 Messages postés 1143 Date d'inscription lundi 22 mars 2010 Statut Membre Dernière intervention 31 juillet 2019 119
10 sept. 2010 à 19:25
Salut
J'ai rien reçu.
Peux tu me le renvoyer stp?
Merci!
0
Personnellement, je suis dans le même cas, et j'ai été contraint de me familiariser avec l'heure américaine ^^
-1