Je teste que le timestamp unix généré par la fonction mktime correspond
bien aux dates et heures que j'ai passé en paramètres.
Tout concorde sauf pour le paramètre "hour" avec comme valeur 08 et 09 mais
si je mets les paramètres de mktime() avec des quotes tout marche bien.
Cependant, je ne comprends pas, car la description de mktime () spécifie que
les paramètres sont des entiers, donc, normalement, je ne devrai pas mettre
de quotes.
Voici mon programme de test de la fonction mktime():
<?php
// test avec quotes
$utmst1 = mktime('09','58','43','04','20','2004'); //fonctionne
$ndate1 = date('H:i:s d-m-Y',$utmst1); print $ndate1;
//-------------------------------------------------------------
//test sans quotes
$utmst2 = mktime(09,58,43,04,20,2004); // fonctionne pour toutes les heures
sauf 08 et 09
$ndate2 = date('H:i:s d-m-Y',$utmst2); print $ndate2; //j'obtiens 00:58:43
20-04-2004 au lieu de 09:58:43 20-04-2004
print "timestamp : $utmst2";
?>
Bien cordialement
Gerard Breiner
Institut D'Astrophysique Spatiale
Orsay
France
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier Miakinen
//------------------------------------------------------------- //test sans quotes $utmst2 = mktime(09,58,43,04,20,2004); // fonctionne pour toutes les heures sauf 08 et 09
Je parierais bien que PHP interprète les nombres comme de l'octal s'ils sont précédés de 0 (convention du langage C).
//-------------------------------------------------------------
//test sans quotes
$utmst2 = mktime(09,58,43,04,20,2004); // fonctionne pour toutes les heures
sauf 08 et 09
Je parierais bien que PHP interprète les nombres comme de l'octal s'ils
sont précédés de 0 (convention du langage C).
//------------------------------------------------------------- //test sans quotes $utmst2 = mktime(09,58,43,04,20,2004); // fonctionne pour toutes les heures sauf 08 et 09
Je parierais bien que PHP interprète les nombres comme de l'octal s'ils sont précédés de 0 (convention du langage C).
Je teste que le timestamp unix généré par la fonction mktime correspond bien aux dates et heures que j'ai passé en paramètres. Tout concorde sauf pour le paramètre "hour" avec comme valeur 08 et 09 mais si je mets les paramètres de mktime() avec des quotes tout marche bien. Cependant, je ne comprends pas, car la description de mktime () spécifie que les paramètres sont des entiers, donc, normalement, je ne devrai pas mettre de quotes.
Et bien, en PHP, comme dans certains autres langages de programmations, 09 n'est pas équivament à 9. Tout entier littéral commençant par 0 est considéré comme un nombre en base 8. Voilà pourquoi 08 et 09 ne fonctionnent pas comme espéré.
En mettant les nombres dans des chaînes de caractères, PHP convertit à la volée ces chaînes en nombres et dans ce cas 08 et 09 ne sont pas considérés comme des nombres en base 8. Voilà pourquoi ça fonctionne comme espéré. :)
Pour plus d'informations, voir le chapitre suivant du manuel: <http://www.php.net/manual/fr/language.types.integer.php>
-- Guillaume Brocker
Gerard Breiner wrote:
Bonjour,
Je teste que le timestamp unix généré par la fonction mktime correspond
bien aux dates et heures que j'ai passé en paramètres.
Tout concorde sauf pour le paramètre "hour" avec comme valeur 08 et 09 mais
si je mets les paramètres de mktime() avec des quotes tout marche bien.
Cependant, je ne comprends pas, car la description de mktime () spécifie que
les paramètres sont des entiers, donc, normalement, je ne devrai pas mettre
de quotes.
Et bien, en PHP, comme dans certains autres langages de programmations,
09 n'est pas équivament à 9. Tout entier littéral commençant par 0 est
considéré comme un nombre en base 8. Voilà pourquoi 08 et 09 ne
fonctionnent pas comme espéré.
En mettant les nombres dans des chaînes de caractères, PHP convertit à
la volée ces chaînes en nombres et dans ce cas 08 et 09 ne sont pas
considérés comme des nombres en base 8. Voilà pourquoi ça fonctionne
comme espéré. :)
Pour plus d'informations, voir le chapitre suivant du manuel:
<http://www.php.net/manual/fr/language.types.integer.php>
Je teste que le timestamp unix généré par la fonction mktime correspond bien aux dates et heures que j'ai passé en paramètres. Tout concorde sauf pour le paramètre "hour" avec comme valeur 08 et 09 mais si je mets les paramètres de mktime() avec des quotes tout marche bien. Cependant, je ne comprends pas, car la description de mktime () spécifie que les paramètres sont des entiers, donc, normalement, je ne devrai pas mettre de quotes.
Et bien, en PHP, comme dans certains autres langages de programmations, 09 n'est pas équivament à 9. Tout entier littéral commençant par 0 est considéré comme un nombre en base 8. Voilà pourquoi 08 et 09 ne fonctionnent pas comme espéré.
En mettant les nombres dans des chaînes de caractères, PHP convertit à la volée ces chaînes en nombres et dans ce cas 08 et 09 ne sont pas considérés comme des nombres en base 8. Voilà pourquoi ça fonctionne comme espéré. :)
Pour plus d'informations, voir le chapitre suivant du manuel: <http://www.php.net/manual/fr/language.types.integer.php>
-- Guillaume Brocker
Gerard Breiner
Bonjour,
Ces réponses confortent ce dont je me doutais un peu. Cependant, le 9 au lieu de 09, j'avais déjà essayé avant de poster mais moi j'ai besoin de 09 voilà pourquoi j'adopte le système des quotes qui apparemment résoud mon problème.
Cordialement
Gerard Breiner
"Olivier Miakinen" <om+ a écrit dans le message de news:c68kmt$2b2l$
//------------------------------------------------------------- //test sans quotes $utmst2 = mktime(09,58,43,04,20,2004); // fonctionne pour toutes les heures
sauf 08 et 09
Je parierais bien que PHP interprète les nombres comme de l'octal s'ils sont précédés de 0 (convention du langage C).
Ces réponses confortent ce dont je me doutais un peu. Cependant, le 9 au
lieu de 09, j'avais déjà essayé avant de poster mais moi j'ai besoin de 09
voilà pourquoi j'adopte le système des quotes qui apparemment résoud mon
problème.
Cordialement
Gerard Breiner
"Olivier Miakinen" <om+news@miakinen.net> a écrit dans le message de
news:c68kmt$2b2l$1@cabale.usenet-fr.net...
//-------------------------------------------------------------
//test sans quotes
$utmst2 = mktime(09,58,43,04,20,2004); // fonctionne pour toutes les
heures
sauf 08 et 09
Je parierais bien que PHP interprète les nombres comme de l'octal s'ils
sont précédés de 0 (convention du langage C).
Ces réponses confortent ce dont je me doutais un peu. Cependant, le 9 au lieu de 09, j'avais déjà essayé avant de poster mais moi j'ai besoin de 09 voilà pourquoi j'adopte le système des quotes qui apparemment résoud mon problème.
Cordialement
Gerard Breiner
"Olivier Miakinen" <om+ a écrit dans le message de news:c68kmt$2b2l$
//------------------------------------------------------------- //test sans quotes $utmst2 = mktime(09,58,43,04,20,2004); // fonctionne pour toutes les heures
sauf 08 et 09
Je parierais bien que PHP interprète les nombres comme de l'octal s'ils sont précédés de 0 (convention du langage C).