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
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
Cette image montre comment les points de semaine pour les dates futures sont gris.
https://i.stack.imgur.com/pYGAn.png
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