fonction date : w : Numéro du jour de la semaine

Eléphant du PHP | 120 Messages

18 août 2021, 11:56

Bonjour,
je me permets de vous solliciter car j'ai du mal à comprendre la logique de la fonction date en PHP, notamment pour ce qui est du numéro du jour de la semaine : date('w')
Si j'ai bien compris, les valeurs vont de 0 (dimanche) à 6 : Donc lundi = 1 par exemple.
Donc le début de la semaine semble être le dimanche ?
Mais dans ce cas, pourquoi aller de 0 à 6 au lieu d'aller de 1 à 7 ?
Parce que du coup, la valeur de dimanche, zéro, est une valeur nulle... ça n'est pas très pratique...
C'est un peu comme si on disait que Janvier était égal à zero, et décembre à 11

Mais en creusant un peu plus, je lis que : date('W') : Numéro de semaine dans l'année (les semaines commencent le lundi) (Exemple : 42 (la 42éme semaine de l'année)

Puis j'ai aussi trouvé : date('N') : Représente le jour de la semaine en chiffre au format ISO-8601 (lundi = 1, dimanche = 7)

Bon, finalement, on fait comme on veut ?
Par convention, le premier jour d'une semaine c'est dimanche ou lundi ?

Parce que ça change un peu la façon de compter les semaines dans un mois cette histoire au final... surtout quand on bosse sur un calendrier de rdvs...
Dans mon cas, j'ai essayé de mettre un numéro sur chaque semaine d'un mois :

Code : Tout sélectionner

$week = (int) ((date('d', $now) - 1) / 7) + 1; $weekday = date("N", $now); $weekday_letter = date("l", $now);
avec $now la date du jour dans une boucle...

Code : Tout sélectionner

echo "".$nowString." (".$weekday_letter.")<br />"; echo "Numéro Semaine du mois : ".$week."<br />"; echo "Numéro Jour de la semaine : ".$weekday."<br />";
sauf que j'aboutis sur cette incohérence :
2021-08-15 (Sunday)
Numéro Semaine du mois : 3
Numéro Jour de la semaine : 7

2021-08-16 (Monday)
Numéro Semaine du mois : 3
Numéro Jour de la semaine : 1

>> le dimanche, qui est le premier jour de la semaine numéro 3, se retrouve appelé le jour 7, et le lundi qui est le 2e jour de la semaine 3 et le jour 1

Alors c'est vrai que je peux faire des adaptations pour que mes valeurs soient plus censées... mais je me dis qu'il y a surement une approche plus logique et naturelle pour retomber sur mes pattes... non ?
si tu as un soucis en informatique, dis toi bien que quelqu'un d'autre l'a eu avant toi

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

19 août 2021, 10:06

En informatique, les tableaux commencent à l'index 0, donc ce n'est pas illogique comme approche.

La norme ISO définit le lundi comme 1er jour de la semaine mais dans plusieurs pays, notamment les Etats-Unis, le Canada, leu Brésil ou encore le Japon, le 1er jour de la semaine c'est le dimanche.

Du coup, il faut que tu adaptes ton code en fonction. Les applis de gestion de calendrier ont ainsi toutes une option dans leurs paramètres pour choisir si le 1er jour de la semaine est le lundi ou le dimanche.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 120 Messages

19 août 2021, 16:39

ok merci, je comprends mieux.
Je vais adapter à mon usage donc car je suis en train de développer ma propre gestion de calendrier.
si tu as un soucis en informatique, dis toi bien que quelqu'un d'autre l'a eu avant toi