22 Voix

PHP: Déterminer le Numéro de Semaine

Tutoriel de Stefan Trost | Dernière mise à jour le 03/06/2023 | Créé le 17/02/2023

Aujourd'hui, je voudrais vous montrer comment récupérer la semaine calendaire (numéro de semaine) d'une date donnée arbitraire avec PHP.

C'est beaucoup plus simple que vous ne le pensez: nous n'avons besoin que de la fonction PHP date() et du caractère de formatage "W". En passant ce caractère comme premier paramètre et n'importe quelle date comme second paramètre à la fonction date() , nous obtenons la semaine civile respectivement le numéro de semaine de l'année pour notre date comme résultat.

Voici un exemple pour cet appel:

$date = time();         // date actuelle

echo date("W", $date);  // sortie, par exemple: 03 ou 10

Selon ISO-8601, pour PHP, la semaine commence le lundi et la sortie est formatée sous la forme de deux chiffres comme chaîne / string (donc, par exemple "01" au lieu de "1").

Si nous voulons avoir un numéro à un seul chiffre pour les numéros de semaine 1 à 9, nous pouvons simplement écrire (int)date("W", $date) pour l'obtenir. Avec cela, le résultat de la fonction est converti d'une chaîne (string) en un nombre entier (integer) dont la sortie est naturellement à un chiffre sans aucun zéro de tête. Nous pouvons bien sûr également procéder de la même manière si nous avons besoin de la semaine civile non pas sous forme de chaîne mais sous forme de nombre (par exemple pour calculer avec).

Année de la Semaine Calendaire

Il y a un problème qui se pose presque à chaque tournant de l'année. Le problème peut se produire chaque fois que la première semaine civile de la nouvelle année commence déjà en décembre ou si la dernière semaine civile d'une année se prolonge en janvier. Dans ces deux cas, l'utilisation de date("W Y", $date) conduit à des résultats erronés:

$dat = strtotime('2027-01-01');

echo date("W Y", $dat);  // sortie: 53 2027

Cet exemple montre ce qui ne va pas: Pour la date 2027-01-01, nous obtenons le numéro de semaine 53 de 2027. La raison de ce mauvais résultat est que "Y" nous fournit l'année de la date passée - c'est 2027. Cependant, nous avons besoin de 2026, car du point de vue de la semaine calendaire, le 1er janvier appartient à la dernière semaine de l'année dernière dans ce cas (ce cas peut se produire non seulement le 1er janvier mais aussi pour un 2 ou un 3 janvier).

Heureusement, les développeurs de PHP ont pensé à ce cas particulier et nous a donné le paramètre "o" (O minuscule). Si nous utilisons ce paramètre à la place du paramètre habituel Y pour l'année avec la fonction date(), nous recevrons l'année correspondant au numéro de semaine de la date passée. Voici un exemple:

$dat = strtotime('2027-01-01');

echo date("W o", $dat);  // sortie: 53 2026

En utilisant ce paramètre, le résultat est correct: nous obtenons la 53e semaine calendaire de 2026, qui se termine dans l'année civile 2027 cette année-là.

Bien entendu, ce code fonctionne également dans le cas contraire, c'est-à-dire dans le cas où la première semaine calendaire de la nouvelle année commence le 29, le 30 ou le 31 décembre.

RépondrePositifNégatif

Sur l’Auteur

AvatarVous pouvez trouver des logiciels de Stefan Trost sur fr.sttmedia.com. Avez-vous besoin d'un logiciel personnalisé selon vos propres besoins? Écrivez-nous: fr.sttmedia.com/contact
Voir Profil

 

Sujets Connexes

VirtualBox: Changer la Date et l'Heure

Tutoriel | 10 Commentaires

Avis Important

Veuillez noter: Les contributions publiées sur askingbox.com sont des contributions d’utilisateurs et ne doivent pas remplacer les conseils d’un professionnel. Ils ne sont pas vérifiés par des indépendants et ne reflètent pas nécessairement l’opinion de askingbox.com. Apprendre encore plus.

Participer

Posez votre propre question ou écrivez votre propre article sur askingbox.com. Voici comment.