Ajouter des mois aux dates sans dépasser le dernier jour du mois en PHP
Modifier une date et ajouter des mois est une tâche simple en PHP . Cependant, garantir que la date résultante ne s'étend pas au-delà du dernier jour du mois pose un léger défi.
Pour résoudre ce problème, nous présentons une approche qui garantit la précision de l'ajout de date :
function add($date_str, $months)
{
$date = new DateTime($date_str);
// Capture the starting day of the month
$start_day = $date->format('j');
// Add the specified number of months
$date->modify(" {$months} month");
// Extract the resulting day of the month
$end_day = $date->format('j');
// Check if the resulting day differs from the original day
if ($start_day != $end_day)
{
// If they are different, it means the month changed, so we adjust the date
$date->modify('last day of last month');
}
return $date;
}
Cette fonction prend deux paramètres : la date initiale sous forme de chaîne et le nombre de mois à ajouter. Cela commence par créer un objet DateTime et extraire le premier jour du mois. La date est ensuite modifiée en ajoutant le nombre de mois spécifié. Après l'ajout, il récupère le jour du mois résultant et le compare au jour d'origine. Si les jours sont différents, cela indique que le mois a changé, la date est donc corrigée au dernier jour du mois précédent.
Pour démontrer l'utilité de cette fonction, voici quelques exemples :
$result = add('2011-01-28', 1); // 2011-02-28
$result = add('2011-01-31', 3); // 2011-04-30
$result = add('2011-01-30', 13); // 2012-02-29
$result = add('2011-10-31', 1); // 2011-11-30
$result = add('2011-12-30', 1); // 2011-02-28
En utilisant cette fonction, vous pouvez ajouter des mois aux dates en toute confiance sans vous soucier des dépassements des mois suivants.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3