Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème avec les dates

7 réponses
Avatar
Yannick VOYEAUD
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
------enig2SLVFOXPWIDDIABQKQPIK
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Bonsoir

Je ne comprend RIEN!
Nous sommes bien le samedi 26 octobre 2013
le script suivant est correct 26/10/2013
setlocale(LC_ALL, 'fr_FR');
echo date('d\/m\/Y');

Par contre ce qui suit me renvoie la date de demain!
dimanche 27 octobre 2013
echo strftime("%A %e %B %Y", mktime(date('d\/m\/Y')));

Ce nouvel =E9l=E9ment renvoie aussi une valeur correcte
dimanche 26 octobre 1913
$nextyear =3D mktime(0, 0, 0, date("m"), date("d"), date("Y")-100);
echo strftime("%A %e %B %Y", $nextyear);

Il s'agit d'un seul fichier

Pourquoi le second =E9l=E9ment est-il incorrect?

Amiti=E9s

--=20
Yannick VOYEAUD
Nul n'a droit au superflu tant que chacun n'a pas son n=E9cessaire
(Camille JOUFFRAY 1841-1924, maire de Vienne)
http://www.voyeaud.org


------enig2SLVFOXPWIDDIABQKQPIK
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Icedove - http://www.enigmail.net/

iQEcBAEBAgAGBQJSbDj/AAoJEGnJBaLV5Tw94jcH/R8hmGWqfLvHE2D1nSynxifO
Jbc5SYgi+hdX0f+LLi1+AwdtzhGo9NehxmySOceY+N+45l2sdRx9Akisgq0qIH8A
0T7C2vqeO9ExOMhZ5+I3J+U5fY32IPrscrbbd5eoZdcft2y4nYBRlxkC8pu+qV2o
mGbxFbN0XE1fEuGkv5ffboZTXX264kQKCh7khZyWIx2KNi4GV7KYu1CE1h/phYiJ
Dqw9g/zEuhO3G2zwSRhLsszJvBuYuTjA5skC1ndBtTP00keApfvSXIBBTikKOIXR
cgbfRuy2grHuQsjXBAR6TRI8k5tlX5/GVeQHMDuJxrZbEu1IDZiJs939fJ1iwYE=
=F0TQ
-----END PGP SIGNATURE-----

------enig2SLVFOXPWIDDIABQKQPIK--

7 réponses

Avatar
Denis Beauregard
Le Sat, 26 Oct 2013 23:49:50 +0200, Yannick VOYEAUD
écrivait dans fr.comp.lang.php:

Bonsoir

Je ne comprend RIEN!
Nous sommes bien le samedi 26 octobre 2013
le script suivant est correct 26/10/2013
setlocale(LC_ALL, 'fr_FR');
echo date('d/m/Y');

Par contre ce qui suit me renvoie la date de demain!
dimanche 27 octobre 2013
echo strftime("%A %e %B %Y", mktime(date('d/m/Y')));

Ce nouvel élément renvoie aussi une valeur correcte
dimanche 26 octobre 1913
$nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")-100);
echo strftime("%A %e %B %Y", $nextyear);

Il s'agit d'un seul fichier

Pourquoi le second élément est-il incorrect?




Pourrait-il s'agir tout bêtement d'une histoire de fuseau horaire ?
Est-ce que l'heure est bonne ?


Denis
Avatar
Yannick VOYEAUD
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
------enig2XXIFDUGCLXPVVUSWALHL
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Le 28/10/2013 00:22, Denis Beauregard a écrit :
Le Sat, 26 Oct 2013 23:49:50 +0200, Yannick VOYEAUD
écrivait dans fr.comp.lang.php:

Bonsoir

Je ne comprend RIEN!
Nous sommes bien le samedi 26 octobre 2013
le script suivant est correct 26/10/2013
setlocale(LC_ALL, 'fr_FR');
echo date('d/m/Y');

Par contre ce qui suit me renvoie la date de demain!
dimanche 27 octobre 2013
echo strftime("%A %e %B %Y", mktime(date('d/m/Y')));

Ce nouvel élément renvoie aussi une valeur correcte
dimanche 26 octobre 1913
$nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y")-100 );
echo strftime("%A %e %B %Y", $nextyear);

Il s'agit d'un seul fichier

Pourquoi le second élément est-il incorrect?




Pourrait-il s'agir tout bêtement d'une histoire de fuseau horaire ?
Est-ce que l'heure est bonne ?



Bonjour Denis,

Oui j'ai regardé de ce coté là mais c'est bon et l'affichage horair e est
OK aussi

Une erreur de fuseau horaire (donc de jours aurait été décelé ava nt sur
la machine)
Le changement de jours s'est bien effectué à 00:00 et le passage à
l'heure d'hiver s'est fait aussi correctement

Amitiés


Denis





--
Yannick VOYEAUD
Nul n'a droit au superflu tant que chacun n'a pas son nécessaire
(Camille JOUFFRAY 1841-1924, maire de Vienne)
http://www.voyeaud.org


------enig2XXIFDUGCLXPVVUSWALHL
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Icedove - http://www.enigmail.net/

iQEcBAEBAgAGBQJSbc/TAAoJEGnJBaLV5Tw915gH/Rox9wlnbYuEwk4bnOfM+Gam
kZLFkCcdCFlOnGYIllXDQ0v0auc1L0XwFdLyegRw9yUa7dTE5vyE9havxJ4imeFP
zMS7WHxffnt34hL6TkaYQkXPNYbaYGCc1gTyMeYYTM8EKjz0BfMGX5brTU5K1yMs
ryHNaFsaCjHRz5oyjWo0ZrvcM1E011VzIwAoZNyC5o/Rxpwu67JQlrqJ63J1H5fQ
iJRBQLElopn8XQZP4TbEA8ywFEbJv0uK9KqhMOAo94RYNW40BPqKZs6eCh0xewra
chW4fJgq0rBnl0OGB2/K9i7bD+waegKhLEiVDkaX+anqiHl9j5OiHvbLmflYxd4 =GcKk
-----END PGP SIGNATURE-----

------enig2XXIFDUGCLXPVVUSWALHL--
Avatar
Olivier Miakinen
Bonjour,

Le 26/10/2013 23:49, Yannick VOYEAUD a écrit :

Je ne comprend RIEN!
Nous sommes bien le samedi 26 octobre 2013
le script suivant est correct 26/10/2013
setlocale(LC_ALL, 'fr_FR');
echo date('d/m/Y');

Par contre ce qui suit me renvoie la date de demain!
dimanche 27 octobre 2013
echo strftime("%A %e %B %Y", mktime(date('d/m/Y')));



Les deux fonctions (mktime et strftime) utilisent-elles la même
référence de temps, je veux dire toutes les deux l'heure UTC ou
toutes les deux l'heure locale ? Si ce n'est pas le cas, et si
ton programme n'est censé fonctionner qu'en France métropolitaine
ou pas loin, tu peux essayer de faire les calculs de temps à midi
plutôt qu'à minuit, mais ce n'est qu'une bidouille.

Ah, en lisant la doc je vois qu'il existe une fonction gmstrftime,
peut-être te sera-t-elle utile si mktime fonctionne en heure UTC
et strftime en heure locale.

Cordialement,
--
Olivier Miakinen
Avatar
Yannick VOYEAUD
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
------enig2KDCASGIPVPISSUWILMPX
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Le 30/10/2013 23:22, Olivier Miakinen a écrit :
Bonjour,

Le 26/10/2013 23:49, Yannick VOYEAUD a écrit :

Je ne comprend RIEN!
Nous sommes bien le samedi 26 octobre 2013
le script suivant est correct 26/10/2013
setlocale(LC_ALL, 'fr_FR');
echo date('d/m/Y');

Par contre ce qui suit me renvoie la date de demain!
dimanche 27 octobre 2013
echo strftime("%A %e %B %Y", mktime(date('d/m/Y')));



Les deux fonctions (mktime et strftime) utilisent-elles la même
référence de temps, je veux dire toutes les deux l'heure UTC ou
toutes les deux l'heure locale ? Si ce n'est pas le cas, et si
ton programme n'est censé fonctionner qu'en France métropolitaine
ou pas loin, tu peux essayer de faire les calculs de temps à midi
plutôt qu'à minuit, mais ce n'est qu'une bidouille.



Bonjour Olivier,

Le setlocale est présent en début de fichier et juste avant les deux
commandes *time


Ah, en lisant la doc je vois qu'il existe une fonction gmstrftime,
peut-être te sera-t-elle utile si mktime fonctionne en heure UTC
et strftime en heure locale.



Je vais regarder ta suggestion et la tester.

Pour info les tests ont été faits directement sur le site de producti on
donc je trouve que cela craint si la base de temps n'est pas la même. J e
vais donc poser la question à l'hébergeur.

Amitiés


--
Yannick VOYEAUD
Nul n'a droit au superflu tant que chacun n'a pas son nécessaire
(Camille JOUFFRAY 1841-1924, maire de Vienne)
http://www.voyeaud.org


------enig2KDCASGIPVPISSUWILMPX
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Icedove - http://www.enigmail.net/

iQEcBAEBAgAGBQJScncKAAoJEGnJBaLV5Tw9sJEH/RwBcHDeRTHWT/Qz+OWVFPCs
25m3dKJ5CP/Ntw5s6Gc1vTks9ffSXIYB956tQVZb88nmHq7aU5zZXtBmye1gzxXa
gFaUdAkfIsDxKFo8/EGbDw8v3OOBMYKBmVlbbEU3H2pIxkdjCt3Y/2+Pn7lx6gQI
GdUsv20L0XT6ucjDtrM4oMTiPdVqQp6QXXWifTo9emzYOzJ5sRFepCjvgDdStsPw
6XvznpLyiBusvaAwb/w/bRV5sCXU0WF89DpWFKMDvscx/dvp22wctn2T7WoTMmU7
ht3+7KXtvTT/z7pbahIR8tw73/tXW/La6inxUHQkjAMzaeF7BZy59gnWxcG+Nno =2Ga8
-----END PGP SIGNATURE-----

------enig2KDCASGIPVPISSUWILMPX--
Avatar
Olivier Miakinen
Le 31/10/2013 16:28, Yannick VOYEAUD m'a répondu :

[...]
echo strftime("%A %e %B %Y", mktime(date('d/m/Y')));



Les deux fonctions (mktime et strftime) utilisent-elles la même
référence de temps, je veux dire toutes les deux l'heure UTC ou
toutes les deux l'heure locale ? Si ce n'est pas le cas, et si
ton programme n'est censé fonctionner qu'en France métropolitaine
ou pas loin, tu peux essayer de faire les calculs de temps à midi
plutôt qu'à minuit, mais ce n'est qu'une bidouille.



Le setlocale est présent en début de fichier et juste avant les deux
commandes *time



Ce n'était pas ma question, mais peu importe. En fait, je n'arrive
pas à trouver dans la doc de mktime la possibilité de lui passer une
*chaîne de caractères* contenant dans l'ordre le jour, puis le mois,
puis l'année.

Dans la doc, on voit que ce sont des entiers, d'abord l'heure, les
minutes et les secondes, puis le mois (avant le jour), puis le jour,
et enfin l'année.

Donc, par exemple :
echo strftime("%A %e %B %Y", 12, 0, 0,
mktime(date('n'))
mktime(date('j'))
mktime(date('Y'))
);

Où as-tu vu une utilisation autre de mktime ?
Avatar
Olivier Miakinen
Le 31/10/2013 17:23, je répondais à Yannick Voyeaud :

echo strftime("%A %e %B %Y", mktime(date('d/m/Y')));







[...] En fait, je n'arrive
pas à trouver dans la doc de mktime la possibilité de lui passer une
*chaîne de caractères* contenant dans l'ordre le jour, puis le mois,
puis l'année.



Alors voilà, c'est tout simple en fait.

La fonction date('d/m/Y') retourne une chaîne de caractères commençant
par le nombre 31 puisque nous sommes le 31 du mois. La fonction mktime
reçoit un seul paramètre qui est censé être l'heure, les autres étant
inchangés par rapport à l'heure courante. Donc, si tu appelles cette
fonction à 17:23:33 le 31/10/2013, c'est comme si tu lui demandais de
formater l'heure 31:23:33 le 31/10/2013, soit 07:23:33 le 01/11/2013
(eh oui, 31 h, c'est 24 h + 7 h, donc 7 h du matin le lendemain).

Conclusion : si tu ne comprends pas ce qui se passe, RTFM !

Cordialement,
--
Olivier Miakinen
Avatar
Yannick VOYEAUD
This is an OpenPGP/MIME signed message (RFC 4880 and 3156)
------enig2QWDNPXFGUQGTEICPCJJP
Content-Type: text/plain; charset=ISO-8859-15
Content-Transfer-Encoding: quoted-printable

Le 31/10/2013 17:33, Olivier Miakinen a écrit :
Le 31/10/2013 17:23, je répondais à Yannick Voyeaud :

echo strftime("%A %e %B %Y", mktime(date('d/m/Y')));







[...] En fait, je n'arrive
pas à trouver dans la doc de mktime la possibilité de lui passer u ne
*chaîne de caractères* contenant dans l'ordre le jour, puis le moi s,
puis l'année.



Alors voilà, c'est tout simple en fait.

La fonction date('d/m/Y') retourne une chaîne de caractères comme nçant
par le nombre 31 puisque nous sommes le 31 du mois. La fonction mktime
reçoit un seul paramètre qui est censé être l'heure, les autres étant
inchangés par rapport à l'heure courante. Donc, si tu appelles cett e
fonction à 17:23:33 le 31/10/2013, c'est comme si tu lui demandais de
formater l'heure 31:23:33 le 31/10/2013, soit 07:23:33 le 01/11/2013
(eh oui, 31 h, c'est 24 h + 7 h, donc 7 h du matin le lendemain).

Conclusion : si tu ne comprends pas ce qui se passe, RTFM !

Cordialement,




Bonsoir,

Encore une fois Olivier je dois te dire MERCI!!!!!!!!!!!!!!!!!!
Tu m'as donné la piste qu'il fallait suivre.

Amitiés

--
Yannick VOYEAUD
Nul n'a droit au superflu tant que chacun n'a pas son nécessaire
(Camille JOUFFRAY 1841-1924, maire de Vienne)
http://www.voyeaud.org


------enig2QWDNPXFGUQGTEICPCJJP
Content-Type: application/pgp-signature; name="signature.asc"
Content-Description: OpenPGP digital signature
Content-Disposition: attachment; filename="signature.asc"

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Icedove - http://www.enigmail.net/

iQEcBAEBAgAGBQJScpi9AAoJEGnJBaLV5Tw9e2kH+wU1zgoKGSPYldw4FbmM0/4B
o0nEPOAO1kfZdCyJGYrLYeVpyMmRnITJ8OqwKs+LxRa+DWG1S+X52ngc6yhWLShP
56lPEdwsxGTG7RcrYEsUVSqCdLwg4ly8C7IOqZE+PqlE1/Kl2PJ0Gvt7XiMiYmeC
n0L9qq5ovq0/YRXQkfkUswcQvNFgLxM5u0MRcITI15LbKzP9I0ud6rTbaKbuqaeS
bGrPYu7kz9iK7nbAfGeUdXIUSRbEwq+FbVJg78AEZhUArUqXc71TjfMLDVsRxupJ
8NAhPJpO+TRuqw5tCxOM1bj62vpgH6Oy9MR3rRHTN0K1CokDNYkTCdFPf5NimSc =l0vk
-----END PGP SIGNATURE-----

------enig2QWDNPXFGUQGTEICPCJJP--