Ajout d'un mois à une DateTime PHP
Fermé
christian82000
Messages postés
47
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
17 septembre 2020
-
14 sept. 2020 à 00:15
christian82000 Messages postés 47 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 17 septembre 2020 - 17 sept. 2020 à 15:32
christian82000 Messages postés 47 Date d'inscription dimanche 27 décembre 2009 Statut Membre Dernière intervention 17 septembre 2020 - 17 sept. 2020 à 15:32
A voir également:
- Ajout d'un mois à une DateTime PHP
- Easy php - Télécharger - Divers Web & Internet
- Ajouter un profil netflix payant - Accueil - Guide streaming
- Ajouter 6 mois à une date excel ✓ - Forum Excel
- Retour a la ligne php ✓ - Forum PHP
- Ajout rapide snap - Forum Snapchat
4 réponses
jordane45
Messages postés
38310
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
14 sept. 2020 à 01:10
14 sept. 2020 à 01:10
Bonjour
<?php $date -> modify("+ 1 month"); //Date du dernier jour du mois echo $date->format('Y-m-t');
christian82000
Messages postés
47
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
17 septembre 2020
Modifié le 16 sept. 2020 à 22:55
Modifié le 16 sept. 2020 à 22:55
Bonsoir Jordane,
Merci de m'avoir répondu rapidement.
Je pensais avoir répondu, mais ?
Mon problème n'est pas d'afficher tel jour du mois, le script a pour but d'afficher tous les jours du mois en cours (ici, tout va bien) et tous les jours du mois suivant. Il en résulte que la variante date() est réduite à l'année et au mois, ce qui permet bien de sélectionner tous les jours.
2 difficultés se présentaient pour l'affichage du mois suivant :
1 - lorsque la date du jour actuel tombe un 31, l'ajout d'un mois donne 2 mois plus loin (exemple, si nous sommes le 31 mars, le mois suivant sera le mois de mai. Cette difficulté est réglée par mon if :
La variable $mois_sup sert de sélecteur sur la colonne "DateCivil" de la table. Ce script fonctionne bien, sauf lorsque l'on affiche la page au mois de décembre..
2 - Lorsque la date actuelle est le mois de décembre.
C'est ici que je rencontre le problème objet de mon sujet.
Je rappelle que les données sont présentées dans deux tableaux, l'un pour les jours du mois en cours, l'autre pour les jours du mois suivant. Chaque tableau est constitué d'une ligne <th></th> dans laquelle est affiché le mois et l'année considéré, et de plusieurs lignes <td></td> (entre 28 et 31) affichant les jours.
Lorsque l'on affiche la page au mois de décembre, les données de janvier sont :
. exactes pour les jours,
. erronées pour le titre. Je m'explique : le nom du mois est correctement affiché (Janvier), mais l'année est celle du jours de l'affichage, donc l'année précédente. Par exemple, si j'affiche la page au mois de décembre 2020, j'aurais comme résultat dans le premier tableau, Décembre 2020 et dans le second tableau, Janvier 2020, alors que logiquement je devrais avoir Janvier 2021. Les jours affichés sont bien ceux du mois de janvier 2021. La date renseignée dans la colonne "DateCivil" dans la table agenda est bien "2021-01-01" sur la ligne du titre ainsi que sur la ligne correspondant au premier jour de janvier.
J'ai peut-être été un peu long dans mon explication, mais le problème n'est pas simple à expliquer.
A toutes fins utiles, le site est "paroisse-saint-nauphary.net" onglet agenda.
Très cordialement,
Christian
Merci de m'avoir répondu rapidement.
Je pensais avoir répondu, mais ?
Mon problème n'est pas d'afficher tel jour du mois, le script a pour but d'afficher tous les jours du mois en cours (ici, tout va bien) et tous les jours du mois suivant. Il en résulte que la variante date() est réduite à l'année et au mois, ce qui permet bien de sélectionner tous les jours.
2 difficultés se présentaient pour l'affichage du mois suivant :
1 - lorsque la date du jour actuel tombe un 31, l'ajout d'un mois donne 2 mois plus loin (exemple, si nous sommes le 31 mars, le mois suivant sera le mois de mai. Cette difficulté est réglée par mon if :
<?php
if($date->format('d') == 31)
{
$date -> modify("- 1 day + 1 month");
}
else
{
$date -> modify("+ 1 month");
}
$mois_sup=$date->format('Y-m');
?>
La variable $mois_sup sert de sélecteur sur la colonne "DateCivil" de la table. Ce script fonctionne bien, sauf lorsque l'on affiche la page au mois de décembre..
2 - Lorsque la date actuelle est le mois de décembre.
C'est ici que je rencontre le problème objet de mon sujet.
Je rappelle que les données sont présentées dans deux tableaux, l'un pour les jours du mois en cours, l'autre pour les jours du mois suivant. Chaque tableau est constitué d'une ligne <th></th> dans laquelle est affiché le mois et l'année considéré, et de plusieurs lignes <td></td> (entre 28 et 31) affichant les jours.
Lorsque l'on affiche la page au mois de décembre, les données de janvier sont :
. exactes pour les jours,
. erronées pour le titre. Je m'explique : le nom du mois est correctement affiché (Janvier), mais l'année est celle du jours de l'affichage, donc l'année précédente. Par exemple, si j'affiche la page au mois de décembre 2020, j'aurais comme résultat dans le premier tableau, Décembre 2020 et dans le second tableau, Janvier 2020, alors que logiquement je devrais avoir Janvier 2021. Les jours affichés sont bien ceux du mois de janvier 2021. La date renseignée dans la colonne "DateCivil" dans la table agenda est bien "2021-01-01" sur la ligne du titre ainsi que sur la ligne correspondant au premier jour de janvier.
J'ai peut-être été un peu long dans mon explication, mais le problème n'est pas simple à expliquer.
A toutes fins utiles, le site est "paroisse-saint-nauphary.net" onglet agenda.
Très cordialement,
Christian
jordane45
Messages postés
38310
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
17 sept. 2020 à 00:42
17 sept. 2020 à 00:42
Je n'ai pas tout lu....
mais ....
Si tu connais l'année et le mois en cours....
Dans ce cas, le mois suivant sera toujours le mois +1 du premier jour du mois ...
mais ....
Si tu connais l'année et le mois en cours....
Dans ce cas, le mois suivant sera toujours le mois +1 du premier jour du mois ...
$date = date("Y-m-01"); .// premier jour du mois actuel $newdate = strtotime ( '+1 month' , strtotime ( $date ) ) ; // premier jour du mois suivant
christian82000
Messages postés
47
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
17 septembre 2020
17 sept. 2020 à 10:45
17 sept. 2020 à 10:45
La formule donne comme résultat 2678400 ce qui correspond au nombre de secondes dans un mois de 31 jours, et non le premier jour du mois suivant.
yg_be
Messages postés
23343
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
24 novembre 2024
1 551
17 sept. 2020 à 11:21
17 sept. 2020 à 11:21
peut-être:
$date = date("Y-m-01"); // premier jour du mois actuel $date -> modify("+ 1 month"); // premier jour du mois suivant
jordane45
Messages postés
38310
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 novembre 2024
4 705
17 sept. 2020 à 12:16
17 sept. 2020 à 12:16
Ah oui,
j'ai oublié de remettre au format date ...... mais bon... franchement... tu ne cherches pas beaucoup...
j'ai oublié de remettre au format date ...... mais bon... franchement... tu ne cherches pas beaucoup...
christian82000
Messages postés
47
Date d'inscription
dimanche 27 décembre 2009
Statut
Membre
Dernière intervention
17 septembre 2020
17 sept. 2020 à 15:32
17 sept. 2020 à 15:32
Si si je cherches, je ne voulais pas te froisser, mais simplement faire remarquer cet oubli...
D'ailleurs mes recherches me conduisent à penser que le problème ne vient pas du script de sélection des données, mais de celui d'affichage du titre des tableaux. En effet, si je supprime les fonctions de conversion (strftime() et strtotime()), j'ai bien la bonne date qui s'affiche au format 01-01-2021 par exemple.
Je continue mes recherches et reviendrai sur le forum pour donner la solution ,,, ou solliciter encore de l'aidde!
En tout cas, merci Jordane de t'être investie sur mon problème.
Christian
D'ailleurs mes recherches me conduisent à penser que le problème ne vient pas du script de sélection des données, mais de celui d'affichage du titre des tableaux. En effet, si je supprime les fonctions de conversion (strftime() et strtotime()), j'ai bien la bonne date qui s'affiche au format 01-01-2021 par exemple.
Je continue mes recherches et reviendrai sur le forum pour donner la solution ,,, ou solliciter encore de l'aidde!
En tout cas, merci Jordane de t'être investie sur mon problème.
Christian