產生指定日期範圍內的日期陣列
在某些情況下,為了在多系列圖表中準確表示數據,需要產生指定範圍內所有日期的完整清單。例如,當圖表中不同資料系列的日期範圍不同時,由於X軸時間軸的不一致,會導致圖表傾斜。
有多種方法可以建立給定日期範圍內的所有日期的陣列或清單。兩種常用的方法包括:使用LINQ來提高簡潔性和可讀性,以及使用for迴圈來實現更明確的控制。
LINQ方法
<code class="language-csharp">Enumerable.Range(0, 1 + end.Subtract(start).Days) .Select(offset => start.AddDays(offset)) .ToArray();</code>
這種方法中,Range
方法產生一個從0到日期範圍內的總天數的數字序列,Select
方法將每個數字轉換為日期,方法是將其加到起始日期。結果是一個包含指定範圍內的所有日期的陣列。
For循環方法
<code class="language-csharp">var dates = new List<DateTime>(); for (var dt = start; dt <= end; dt = dt.AddDays(1)) { dates.Add(dt); }</code>
此方法使用for迴圈將指定範圍內的每個日期遞增地新增至清單中。循環持續到達到結束日期為止,確保包含所有日期。
使用預設值填入缺失值
為了處理某些系列可能缺少特定日期資料的場景,可以考慮使用預設值填入這些日期。這可以透過使用字典來實現,將每個日期與其對應的值關聯起來,如果不存在值,則使用預設值。
<code class="language-csharp">var paddedSeries = fullDates.ToDictionary(date => date, date => timeSeries.ContainsKey(date) ? timeSeries[date] : defaultValue);</code>
在這個例子中,字典將每個日期對應到其值,對於時間序列中不存在的日期,則分配一個預設值。透過這種方法,結果資料集保持一致的日期範圍,並為缺失的資料點填入預設值。
以上是如何在 C# 中產生兩個給定日期之間的日期陣列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!