簡體   English   中英

給定開始和結束日期...在C#中查找范圍內的所有日期

[英]Given a start and end date… find all dates within range in C#

給定DateTime start = startsomethingDateTime end = endSomething

有沒有一種標准的方法可以在開始和結束時返回所有日期,這樣返回的日期列表就像...

'1/1/2012 12:00 AM'
'1/2/2012 12:00 AM'

您可以創建一個這樣的方法:

public static IEnumerable<DateTime> Range(DateTime start, DateTime end) {
  for (var dt = start; dt <= end; dt = dt.AddDays(1)) {
    yield return dt;
  }
}

您可以填寫所有日期的列表:

DateTime begin = //some start date
DateTime end = //some end date
List<DateTime> dates = new List<DateTime>();
for(DateTime date = begin; date <= end; date = date.AddDays(1))
{
    dates.Add(date);
}

Linq方式:

DateTime start = new DateTime(2012, 1, 1);
DateTime end = new DateTime(2012, 6, 1);

var list = Enumerable.Range(0, (end - start).Days + 1).Select(i => start.AddDays(i));

您可以使用它來生成日期范圍

public static IEnumerable<DateTime> GetDateRange(DateTime startDate, DateTime endDate)
{
  if (endDate < startDate)
    throw new ArgumentException("endDate must be greater than or equal to startDate");

  while (startDate <= endDate)
  {
    yield return startDate;
    startDate = startDate.AddDays(1);
  }
}

然后

GetDateRange(startDate,endDate).Select(d => d.ToString("dd/MM/yyyy hh:mm")).ToArray();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM