2 votes

Générer les dates de début et de fin pour chaque semaine d'une année à partir de n'importe quelle date avec PHP

Récemment, j'ai découvert une application https://entire.life qui montre un calendrier similaire aux images ci-dessous dans lequel il affiche une rangée de points pour chaque année de votre vie.

La rangée de points fait 52 points de large, 1 point par semaine pour cette année-là.

Chaque rangée est une année.

Le 1er point de la rangée de chaque année démarre à la semaine de votre date de naissance et non le 1er janvier de l'année. Ainsi, la rangée de points de semaine représente 1 an par rangée commençant et se terminant à la semaine de votre date de naissance.

La dernière image ci-dessous montre que les points de semaine qui sont dans le futur par rapport à la date d'aujourd'hui sont affichés en gris pour indiquer que ces semaines ne se sont pas encore produites.

Voici un exemple en direct des images ci-dessus pour voir cela en action https://entire.life/jason-davis


https://i.stack.imgur.com/ne07D.png description de l'image ici


Cette image ci-dessous montre un formulaire pour ajouter des événements pour le point de semaine actuel sur lequel vous avez cliqué.

https://i.stack.imgur.com/K5BUT.png description de l'image ici


Cette image montre comment les points de semaine pour les dates futures sont gris.

https://i.stack.imgur.com/pYGAn.png description de l'image ici


QUESTION

En utilisant PHP, j'aimerais générer un calendrier comme celui-ci basé sur la date de naissance des utilisateurs, comme l'application montrée ci-dessus.

Voici un exemple en direct des images ci-dessus pour voir cela en action https://entire.life/jason-davis

Règles :

  • Générer une rangée de points représentant chaque semaine de l'année
  • Générer une rangée des points de semaine ci-dessus pour 100 ans de rangées à partir de l'année de naissance des utilisateurs.
  • Le point de semaine de départ pour chaque rangée doit commencer à la semaine de naissance des utilisateurs et non le 1er janvier de l'année.

En utilisant les fonctions DateTime de PHP, comment puis-je déterminer les dates de début et de fin de chacune des 52 semaines basées sur la date de naissance d'un utilisateur ?

Ma date de naissance dans l'exemple ici est le 21 avril 1983 Les points de semaines de la 1ère année représentent ces dates basées sur cette date de début :

1ère rangée de points de l'année
- 21 – 27 avril 1983 - 0 ans
- 28 avril – 4 mai 1983 - 0 ans
- 5 – 11 mai 1983 - 0 ans
- 12 – 18 mai 1983 - 0 ans
- 19 – 25 mai 1983 - 0 ans
- 26 mai – 1 juin 1983 - 0 ans
- 2 – 8 juin 1983 - 0 ans
- 9 – 15 juin 1983 - 0 ans
- 16 – 22 juin 1983 - 0 ans
- 23 – 29 juin 1983 - 0 ans
- ...
- ... - ...
- 29 mars – 4 avril 1984 - 0 ans
- 5 – 11 avril 1984 - 0 ans
- 12 – 18 avril 1984 - 0 ans
- 19 – 20 avril 1984 - 0 ans

2ème rangée de points de l'année
- 21 – 27 avril 1984 1 an - 28 avril – 4 mai 1984 - 1 an
- 5 – 11 mai 1984 - 1 an
- 12 – 18 mai 1984 - 1 an
- 19 – 25 mai 1984 - 1 an
- 26 mai – 1 juin 1984 - 1 an
- 2 – 8 juin 1984 - 1 an
- 9 – 15 juin 1984 - 1 an
- 16 – 22 juin 1984 - 1 an
- 23 – 29 juin 1984 - 1 an
- ...
- ...
- ...
- 29 mars – 4 avril 1985 - 1 an
- 5 – 11 avril 1985 - 1 an
- 12 – 18 avril 1985 - 1 an
- 19 – 20 avril 1985 - 1 an

2voto

Yann Chabot Points 512

Voilà :

'; // Juste pour séparer chaque année par une barre horizontale html
     $limit = 52; // 52 pour une année, mais vous pourriez en avoir autant que nécessaire
     for ($i = 0; $i < $limit; $i++){
       echo $wishedDate->format('Y-m-d H:i:s'); // Écrire la date actuelle
       echo ''; // Juste pour changer de ligne
       $wishedDate->modify('+1 week'); // Ajouter une semaine à la date souhaitée
     }
   }
?>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X