[英]Given a start and end date… find all dates within range in C#
Given DateTime start = startsomething
and DateTime end = endSomething
给定
DateTime start = startsomething
和DateTime end = endSomething
Is there a standard way to return all Dates within start and end such that the return is a list of Dates like ... 有没有一种标准的方法可以在开始和结束时返回所有日期,这样返回的日期列表就像...
'1/1/2012 12:00 AM'
'1/2/2012 12:00 AM'
You can create a method like this: 您可以创建一个这样的方法:
public static IEnumerable<DateTime> Range(DateTime start, DateTime end) {
for (var dt = start; dt <= end; dt = dt.AddDays(1)) {
yield return dt;
}
}
You can fill a list with all the dates: 您可以填写所有日期的列表:
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);
}
The Linq way: 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));
You can use this for generating a date range 您可以使用它来生成日期范围
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);
}
}
Then 然后
GetDateRange(startDate,endDate).Select(d => d.ToString("dd/MM/yyyy hh:mm")).ToArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.