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

[H-S] fonctions de dates dans php5

7 réponses
Avatar
pascal
Bonjour la liste

Je sais c'est complètement HS mais je ne doute pas que quelques uns
d'entre vous maitrisent le php et là je dois dire que ma perplexité est
totale.

Je suis sous php5 en CGI sous debian testing.

Amené à écrire un petit script qui retourne un tableau des dates
comprises entre deux dates données au format MySQL voilà sur quoi je
suis tombé :
echo strftime("%Y-%m-%d", mktime(0,0,0,10,30,2005));
---> 2005-10-30
echo strftime("%Y-%m-%d", mktime(0,0,0,10,30,2005) + 24*3600);
---> 2005-10-30 !!!!
echo strftime("%Y-%m-%d", mktime(0,0,0,10,30,2005) + 48*3600);
---> 2005-10-31

Pouvez-vous reproduire ce comportement ? Y a-t-il deux 30 octobre"s"
cette année sans que j'en ai été averti ?
Ou y a-t-il une subtilité du calendrier qui m'aurait échappée ?
Merci d'avance
Pascal
--
"Pour voir le monde dans un grain de sable
Et les cieux dans une fleur
Capturez l'infinité dans la paume de votre main
Et l'éternité dans une heure." William Blake



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

7 réponses

Avatar
Sébastien Lardière
Le 05/07/05, pascal a écrit :
Bonjour la liste

Je sais c'est complètement HS mais je ne doute pas que quelques uns
d'entre vous maitrisent le php et là je dois dire que ma perplexité e st
totale.

Je suis sous php5 en CGI sous debian testing.

Amené à écrire un petit script qui retourne un tableau des dates
comprises entre deux dates données au format MySQL voilà sur quoi je
suis tombé :
echo strftime("%Y-%m-%d", mktime(0,0,0,10,30,2005));
---> 2005-10-30
echo strftime("%Y-%m-%d", mktime(0,0,0,10,30,2005) + 24*3600);
---> 2005-10-30 !!!!
echo strftime("%Y-%m-%d", mktime(0,0,0,10,30,2005) + 48*3600);
---> 2005-10-31



J'ai mieux a te proposer :

echo strftime("%Y-%m-%d %H:%M", mktime(0,0,0,10,30,2005) + 2*3600 ) ;
--> 2005-10-30 02:00
echo strftime("%Y-%m-%d %H:%M", mktime(0,0,0,10,30,2005) + 3*3600 ) ;
--> 2005-10-30 02:00

Etonnant, non ?


Pouvez-vous reproduire ce comportement ? Y a-t-il deux 30 octobre"s"
cette année sans que j'en ai été averti ?
Ou y a-t-il une subtilité du calendrier qui m'aurait échappée ?



He bien non, rien d'étonnant, cette année, le passage de l'heure d'ét é
à l'heure d'hiver est dans la nuit du 30 octobre. A 3 heures, il sera
2 heures.

--
Sébastien
Avatar
pascal
Sébastien Lardière a écrit :
Le 05/07/05, pascal a écrit :



Ou y a-t-il une subtilité du calendrier qui m'aurait échappée ?





<snip>


He bien non, rien d'étonnant, cette année, le passage de l'heure d'été
à l'heure d'hiver est dans la nuit du 30 octobre. A 3 heures, il sera
2 heures.



Ha l'abruti !
Hé bien merci...
Ca me rassure en un sens...
Mais en ce qui concerne mes capacités moins :))
Je ne voudrais pas abuser mais...As-tu connaissance d'un moyen simple
d'en tenir compte dans un script tel que celui que j'essaie d'écrire ?
En tout cas merci.
Pascal

--
"Pour voir le monde dans un grain de sable
Et les cieux dans une fleur
Capturez l'infinité dans la paume de votre main
Et l'éternité dans une heure." William Blake



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Sébastien Lardière
Le 05/07/05, pascal a écrit :

Je ne voudrais pas abuser mais...As-tu connaissance d'un moyen simple
d'en tenir compte dans un script tel que celui que j'essaie d'écrire ?



Je sais pas ce que tu essaies d'écrire, donc je ne vois pas comment
t'aider plus.

--
Sébastien
Avatar
pascal
Sébastien Lardière a écrit :
Le 05/07/05, pascal a écrit :


Je ne voudrais pas abuser mais...As-tu connaissance d'un moyen simple
d'en tenir compte dans un script tel que celui que j'essaie d'écrire ?




Je sais pas ce que tu essaies d'écrire, donc je ne vois pas comment
t'aider plus.



Désolé d'avoir été imprecis. Comme je le disais j'essaie de faire une
fonction qui renvoie un tableau des dates comprises entre deux dates
données au format MySQL. Ca marche au poil ...Ne serait ce problème des
passages aux heures d'hiver / été.
voila le code :
**********
function tabjours($date1, $date2)
{
$tab[]= array();
$date = $inf = $sup = $temp = "";
$inf = date2unix($date1);
$sup = date2unix($date2);
$temp = $inf;
if($inf > $sup)
{
$temp = $sup;
$sup = $inf;
$inf = $temp;
}
else
{
if ($inf == $sup)
return array($date1);
}
$tab[] = strftime('%Y-%m-%d', $temp);
while($temp < $sup)
{
$temp = $temp + 24*3600;
$date = strftime('%Y-%m-%d', $temp);
$tab[] = $date;
}
return $tab;
}
**********
où date2unix fait ce que son nom indique...
je viens d'essayer le paramètre is_dst de mktime : sans grand effet...
Voilà, merci

Pascal
--
"Pour voir le monde dans un grain de sable
Et les cieux dans une fleur
Capturez l'infinité dans la paume de votre main
Et l'éternité dans une heure." William Blake



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
pascal
pascal a écrit :
Sébastien Lardière a écrit :

Le 05/07/05, pascal a écrit :


Je ne voudrais pas abuser mais...As-tu connaissance d'un moyen simple
d'en tenir compte dans un script tel que celui que j'essaie d'écrire ?





Je sais pas ce que tu essaies d'écrire, donc je ne vois pas comment
t'aider plus.




où date2unix fait ce que son nom indique...
je viens d'essayer le paramètre is_dst de mktime : sans grand effet...
Voilà, merci

Pascal


Désolé pour le bruit...
Mais j'ai posté trop vite.
Le paramètre is_dist mis à 0 règle le pb dans la fonction mktime...
Encore merci
Pascal
--
"Pour voir le monde dans un grain de sable
Et les cieux dans une fleur
Capturez l'infinité dans la paume de votre main
Et l'éternité dans une heure." William Blake



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Sébastien Lardière
Le 05/07/05, pascal a écrit :
>
Désolé d'avoir été imprecis. Comme je le disais j'essaie de faire une
fonction qui renvoie un tableau des dates comprises entre deux dates
données au format MySQL. Ca marche au poil ...Ne serait ce problème d es
passages aux heures d'hiver / été.



Sans rentrer dans le détail, il me semble que dans ton cas, en prenant
comme point de départ 12h (midi), et non pas 0h (minuit), ton probleme
de décalage d'heure n'apparaitra plus. Bien sûr, ça n'est valable que
si tu recherches un jour, et pas une heure précise.

echo strftime("%Y-%m-%d %H:%M", mktime(12,0,0,10,30,2005) + 24*3600) ;
// ---> 2005-10-31 12:00 Ok
echo strftime("%Y-%m-%d %H:%M", mktime(12,0,0,10,30,2005) + 48*3600) ;
// ---> 2005-11-01 12:00

--
Sébastien
Avatar
pascal
Sébastien Lardière a écrit :
Le 05/07/05, pascal a écrit :

Désolé d'avoir été imprecis. Comme je le disais j'essaie de faire une
fonction qui renvoie un tableau des dates comprises entre deux dates
données au format MySQL. Ca marche au poil ...Ne serait ce problème des
passages aux heures d'hiver / été.




Sans rentrer dans le détail, il me semble que dans ton cas, en prenant
comme point de départ 12h (midi), et non pas 0h (minuit), ton probleme
de décalage d'heure n'apparaitra plus. Bien sûr, ça n'est valable que
si tu recherches un jour, et pas une heure précise.

echo strftime("%Y-%m-%d %H:%M", mktime(12,0,0,10,30,2005) + 24*3600) ;
// ---> 2005-10-31 12:00 Ok
echo strftime("%Y-%m-%d %H:%M", mktime(12,0,0,10,30,2005) + 48*3600) ;
// ---> 2005-11-01 12:00




Ok marche aussi !
Merci
Pascal
--
"Pour voir le monde dans un grain de sable
Et les cieux dans une fleur
Capturez l'infinité dans la paume de votre main
Et l'éternité dans une heure." William Blake



--
Pensez à lire la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench

Pensez à rajouter le mot ``spam'' dans vos champs "From" et "Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact