Récupérer la date du premier jour de la semaine

Publié par Arnaud le 17 fév 2011 dans Développement

Un petit bout de code PHP, qui fait écho à une question qu’on m’a posée : comment récupérer la date du premier jour de la semaine ?
Très utile pour les scripts de calendrier, par exemple.

MAJ : Si votre serveur utilise une version >= PHP 5.1.0 vous pouvez utiliser la fonction suivante :

<?php
echo date('l d F Y', mktime(0, 0, 0, date('m'), date('d')-date('N')+1, date('Y')));
// Affiche par exemple : monday 26 september 2011
?>

Sinon, vous pouvez utiliser le bout de code ci-dessous mais attention; la fonction date(‘w’) retourne 0 pour le dimanche. Il faudrait améliorer un peu la ligne ci-dessous :

<?php
echo date('l d F Y', mktime(0, 0, 0, date('m'), date('d')-date('w')+1, date('Y')));
// Affiche par exemple : monday 14 february 2011
?>


2 commentaires

zerOmhz
27 sept 2011 à 11:14

Bonjour,

c’est curieux … en testant avec le dimanche 2 octobre 2011 comme date,
la fonction me donne le lundi 3 octobre comme premier jour de la semaine …
Alors que e premier jour de cette semaine est le lundi 26 septembre ….
Dommage …. :-(


 
Arnaud
28 sept 2011 à 8:05

Salut,

En effet, c’est un bug que je n’avais pas remarqué car mon script n’utilise aucun week-end :)

La fonction date(‘w’) retourne le jour de la semaine au format numérique de 0 (pour dimanche) à 6 (pour samedi). Comme tu testes avec le dimanche, ça te retourne -0, tu fais +1 on est au lundi d’après.

Dans ce cas, on peut utiliser la fonction date(‘N’) qui retourne la représentation numérique ISO-8601 du jour de la semaine (ajouté en PHP 5.1.0) de 1 (pour Lundi) à 7 (pour Dimanche).

Il faut juste modifier le code pour qu’il ressemble à ça :
< ?php
echo date('l d F Y', mktime(0, 0, 0, date('m'), date('d')-date('N')+1, date('Y')));
?>

Tu peux tester et me dire si ça fonctionne ?
Bonne journée
Ps : Je vais mettre à jour l’article du coup :)


 

Répondre

Copyright © 2012 Arnaud Bosquet.
Theme signé Laptop Geek. Modifié par moi. Traduction WordPress tuto.