Fonction date() et décalage horaire

Résolu
pouchteck Messages postés 3 Date d'inscription samedi 10 octobre 2009 Statut Membre Dernière intervention 23 novembre 2009 - 22 nov. 2009 à 18:10
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 - 23 nov. 2009 à 19:09
Bonjour,
Je suis en train de programmer une partie commentaires en PHP pour mon site, et je voudrais afficher la date et l'heure de post, avec la fonction date.

Seulement voilà, l'heure enregistrée avance de exactement 23 minutes par rapport à mon heure système, et je suis pourtant à l'heure !
Je vous copie des extraits de mon code.

Enregistrement de la date/heure dans ma base de données à la validation du formulaire :

<?php 
$date = date('d/m/Y');
$heure = date('H:i:s');
mysql_query("INSERT INTO table VALUES('','$date','$heure')");
?>


Affichage de la date/heure en dessous du commentaire :

Posté le <?php echo $donnees['Date']; ?> à <?php echo $donnees['Heure']; ?>.



PS: ajouter un "date_default_timezone_set(Europe/Paris);" n'a rien donné.
Peu-être vais-je tout simplement soustraire 23 minutes à l'heure avant enregistrement...
Si c'est la seule solution, pourriez-vous m'expliquer comment procéder?

Merci d'avance pour toutes vos réponses.

8 réponses

cyrhades Messages postés 23 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 22 juillet 2010
22 nov. 2009 à 20:43
Il serait stupide de modifier l'heure plutot que résoudre le réel probleme.
Tout d'abord ton script se trouve bien en local ?
Ta bdd est en local aussi ?
pour resoudre le pb tu tenter un time() en sql lors de l'enregistrement plutot que de recup l'heure en php.
Etrange si Apache est en local qu'il ne parvienne pas a récupérer correctement l'heure ...
3
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
23 nov. 2009 à 18:51
Salut,

Peut-on interposer du texte entre la date et l'heure quand on récupère le contenu d'un champ de type DATETIME ?

Oui, MySQL met à ta disposition plein de fonction de manipulation des dates et des chaînes de caractères. Voici un exemple, ici une simple spécification du format dans lequel on veux la date est suffisant :
mysql> SELECT DATE_FORMAT(NOW(), 'Posté le %e/%m/%Y à %T');
+----------------------------------------------+
| DATE_FORMAT(NOW(), 'Posté le %e/%m/%Y à %T') |
+----------------------------------------------+
| Posté le 23/11/2009 à 18:46:09               |
+----------------------------------------------+
1 row in set (0.00 sec)


Je te recommande la lecture de la documentations MySQL :
Fonctions de dates et d'heures
Fonctions de chaînes de caractères


PS : Désolé de devoir mettre ma commande dans la balise prévue pour du code PHP, pour un bon affichage il faut une police à chasse fixe et le code de type "autre" est foireux.
3
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
22 nov. 2009 à 20:51
Salut,

Juste comme ça, plutôt que de t'embêter a faire la date avec PHP tu peux utiliser NOW() ou similaire dans ta requête SQL. ET au passage je ne vois pas pourquoi tu as mis la date et l'heure dans deux champs séparés, les champs DATETIME existent.
0
pouchteck Messages postés 3 Date d'inscription samedi 10 octobre 2009 Statut Membre Dernière intervention 23 novembre 2009
23 nov. 2009 à 15:32
Bonjour,

J'avais essayé de modifier mon code sans le tester en local(je sais, c'est pas bien...),et en local ça marche.c'est donc dû à la localisation du serveur, ou quoi...?

Peut-on interposer du texte entre la date et l'heure quand on récupère le contenu d'un champ de type DATETIME ?
Parce que je voudrais quelque chose du genre
"Posté le jj/mm/aaaa à hh:mm:ss".

Voilà, en tout cas merci à vous pour vos indications.
0

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

Posez votre question
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
23 nov. 2009 à 18:54
Salut,

c'est donc dû à la localisation du serveur, ou quoi...?

Je ne pense pas, ça ressemble plutôt à une heure non mise à jour (parait bizarre mais bon)
Qu'en est il si tu utilises NOW() dans la requête SQL, comme suggéré par TychoBrahe ?

Peut-on interposer du texte entre la date et l'heure quand on récupère le contenu d'un champ de type DATETIME ?

Oui, en utilisant DATE_FORMAT() (cf doc mySQL)


Cordialement,

Kohntark -
0
cyrhades Messages postés 23 Date d'inscription samedi 21 novembre 2009 Statut Membre Dernière intervention 22 juillet 2010
23 nov. 2009 à 18:56
Salut
c'est pas exactement un problême de localisation ca les fuseau horaire son de 1heure de décalage si tu a 23 minutes c'est que le serveur n'est pas a l'heure si c'est un hebergeur n'hésite pas a le contacter pour l'informer.
Pour intercaler du texte c'est out simple un DATETIME a un format tres precis
YYYY/MM/DD HH:II:SS
pour mettre dans le format : jj/mm/aaaa à hh:mm:ss
$datetime = 'YYYY/MM/DD HH:II:SS';
// on eclate la chaine a l'espace ce qui separe la date de l'heure
$date_heure = explode(" ",$datetime);
$heure = $date_heure[1];
// on eclate la date_heure[0] (donc la date seule) 
// sur le caractere /
$date = explode("/",$date_heure[0]);
// on replace dans l'ordre voulu
$date = $date[2] . '/' .$date[1] . '/' $date[0];
// on affiche
echo $date .' à '.$heure;

le resultat :
DD/MM/YYYY à HH:II:SS
tu peux egalement explode la date sur le caractere : si tu veux par exemple retirer les secondes.
Il existe certainement des fonctions pour te faire ça proprement au pire tu la crée ;-) c'est pas bien difficile est un tres bon exercice pour un debutant.
0
kohntark Messages postés 3705 Date d'inscription lundi 5 juillet 2004 Statut Membre Dernière intervention 27 avril 2012 30
23 nov. 2009 à 18:57
grillé par TychoBrahe.


Cordialement,


Kohntark -
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
23 nov. 2009 à 19:09
Salut,

@cyrhades : heu, pourquoi s'embêter avec PHP quand MySQL sait si bien le faire tout seul ? Je ne connais que les Shadoks qui feraient cela...
0
Rejoignez-nous