Bonjour,
J'ai un soucis avec le changement d'année (argh!)
J'ai un planning hebdomadaire sur lequel je fais plein de choses,
et j'ai BESOIN d'avoir
Depuis longtemps j'utilisais simplement ça :
$year = date('Y');
$week_num = date('W');
Au cours de l'année ça fonctionnait bien.
Mais aujourd'hui,
je suis en Nouvelle-Calédonie, le 01/01/2017, à 09h30 du matin,
et j'ai :
<?php
$year == 2017 // ok
$week_num == 52 // pas OK du tout. Du coup mon planning m'affiche des jours de fin d'année 2017, au lieu de début d'année 2017
// $week_num devrait être à 1, pas à 52
?>
Je précise que tout mon système a besoin d'avoir ce numéro de la semaine,
je ne peux pas faire sans.
J'ai essayé de mettre
<?php
date_default_timezone_set('Pacific/Noumea');
$year = date('Y');
$week_num = date('W');
?>
Mais ça n'a pas changé.
J'étais sur qu'avec le timezone_set ça irai mais il semblerai que non,
du coup je ne vois pas comment m'en sortir.
Si vous avez une idée,
merci pour votre aide.
Bonjour,
Non $week_num est correcte puisque la semaine n°1 est la première semaine entière de janvier.
Vous pouvez toujours forcer $week_num = 1 en testant si le mois en cours est égale à 1 et que le semaine en cours est 52.
if($week_num === 52 && date('n') === 1){
$week_num = 1;
}
en France, les numéros de semaine suivent la norme iso-8601:1988
c-a-d que la semaine 1 c'est la première semaine d'au moins 4 jours situés dans la nouvelle année, et les semaines commencent un lundi contrairement aux anglo-saxons pour qui elles commencent un dimanche.
le dimanche 1 janvier 2017 fait donc partie de la dernière semaine de l'année 2016 (la semaine 52).
En php la fonction strftime propose les différents calculs
$week = strftime("%V"); // renvoie 52
$week = strftime("%U"); // renvoie 1
Ah d'accord.
Eh bien super, ça me retire une épine du pied.
Merci beaucoup à vous 2 !
Et bonne année ;)