Maison > développement back-end > tutoriel php > Comment générer un tableau de dates entre deux dates données en PHP ?

Comment générer un tableau de dates entre deux dates données en PHP ?

DDD
Libérer: 2024-12-30 08:09:10
original
160 Les gens l'ont consulté

How to Generate an Array of Dates Between Two Given Dates in PHP?

Générer un tableau de dates entre deux dates spécifiées en PHP

Cet extrait de code PHP vous aide à accomplir une tâche cruciale dans la manipulation de dates : générer un tableau contenant toutes les dates dans une plage spécifiée. Ce code y parvient avec succès en convertissant la plage de dates donnée en un tableau de dates.

Entrée attendue

L'entrée attendue pour ce code est une paire de dates dans le format 'AAAA-MM-JJ'. Par exemple, si vous souhaitez générer un tableau de dates entre le 1er octobre 2010 et le 5 octobre 2010, l'entrée serait :

getDatesFromRange( '2010-10-01', '2010-10-05' );
Copier après la connexion

Sortie attendue

Le résultat attendu est un tableau contenant toutes les dates comprises dans la plage spécifiée. Dans l'exemple ci-dessus, le résultat serait :

Array( '2010-10-01', '2010-10-02', '2010-10-03', '2010-10-04', '2010-10-05' )
Copier après la connexion

Solution

Ce code utilise deux approches pour générer un tableau de dates entre deux dates spécifiées :

  1. Utiliser un Boucle :

    • Créez un nouvel objet DateTime pour la date de début.
    • Itérez de la date de début à la date de fin, en incrémentant le jour d'un à chaque itération.
    • Ajouter chaque date à un tableau.
  2. Utilisation de la classe DatePeriod :

    • Créez un nouvel objet DatePeriod avec les dates de début et de fin et un intervalle de jours.
    • Parcourez l'objet DatePeriod à l'aide d'un foreach boucle.
    • Convertissez chaque objet DateTime en chaîne au format souhaité.

Implémentation du code

function getDatesFromRange($startDate, $endDate) {
    $dates = array();

    // Convert the start and end dates to DateTime objects
    $startDateObj = new DateTime($startDate);
    $endDateObj = new DateTime($endDate);

    // Iterate from the start date to the end date, incrementing the day by one each iteration
    while ($startDateObj <= $endDateObj) {
        $dates[] = $startDateObj->format('Y-m-d');
        $startDateObj->add(new DateInterval('P1D'));
    }

    return $dates;
}
Copier après la connexion

Exemple Utilisation

$dates = getDatesFromRange('2010-10-01', '2010-10-05');
print_r($dates);
Copier après la connexion

Sortie

Array ( [0] => 2010-10-01 [1] => 2010-10-02 [2] => 2010-10-03 [3] => 2010-10-04 [4] => 2010-10-05 )
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal