Maison > développement back-end > C++ > Comment puis-je générer une liste de dates complète entre deux dates pour l'alignement de graphiques multi-séries ?

Comment puis-je générer une liste de dates complète entre deux dates pour l'alignement de graphiques multi-séries ?

Linda Hamilton
Libérer: 2025-01-10 21:01:45
original
255 Les gens l'ont consulté

How Can I Generate a Comprehensive Date List Between Two Dates for Multi-Series Graph Alignment?

Alignement de graphiques multi-séries : génération d'une plage de dates complète

La création de graphiques multi-séries présente souvent un défi : différentes séries de données peuvent avoir des intervalles de données incohérents au sein de la même période, ce qui conduit à des graphiques mal alignés. Pour résoudre ce problème, nous avons besoin d’une liste de dates complète couvrant toute la plage, quelles que soient les lacunes dans les données. Cela garantit un alignement correct et permet un remplissage nul des points de données manquants.

Méthode 1 : Solution LINQ élégante

Cette approche LINQ concise génère efficacement la liste de dates souhaitée :

<code class="language-csharp">Enumerable.Range(0, 1 + end.Subtract(start).Days)
          .Select(offset => start.AddDays(offset))
          .ToArray();</code>
Copier après la connexion

Ce code crée d'abord une séquence d'entiers représentant les décalages de jours à partir de la date de début. Ensuite, il ajoute chaque décalage à la date de début, produisant un tableau contenant chaque date dans la plage spécifiée.

Méthode 2 : boucle For itérative

Alternativement, une boucle for fournit une approche plus explicite, étape par étape :

<code class="language-csharp">var dates = new List<DateTime>();

for (var dt = start; dt <= end; dt = dt.AddDays(1))
{
   dates.Add(dt);
}</code>
Copier après la connexion

Cette boucle itère de jour en jour, ajoutant chaque date à une liste jusqu'à ce que la date de fin soit atteinte.

Combler les lacunes avec des valeurs par défaut

Pour gérer les données manquantes, utilisez un dictionnaire pour mapper chaque date de la plage complète à sa valeur correspondante (ou une valeur par défaut si la date est absente) :

<code class="language-csharp">var paddedSeries = fullDates.ToDictionary(date => date, date => timeSeries.ContainsKey(date) 
                                               ? timeSeries[date] : defaultValue);</code>
Copier après la connexion

Voici fullDates la liste complète des dates. Si timeSeries contient une valeur pour une date donnée, cette valeur est utilisée ; sinon, le defaultValue est attribué. Cela garantit que toutes les dates sont représentées dans la série finale.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal