![](/img/trans.png)
[英]how to find date range between two dates in days format using linq c#
[英]Get days that are not present in a date range using Linq
我有一個日期列表,可以像
06/01/2012
06/02/2012
06/03/2012
06/06/2012
06/07/2012
06/08/2012
06/10/2012
06/13/2012
06/14/2012
06/15/2012
我有這個日期范圍
06/01/2012-06/15/2012
我如何使用linq獲取不在列表中但落在日期范圍內的日期。
您可以執行以下操作:
var dateList = new List<DateTime>
{
new DateTime(2012, 06, 01),
new DateTime(2012, 06, 02),
//..etc
};
var startDate = new DateTime(2012, 06, 01);
var endDate = new DateTime(2012, 06, 15);
var dateRange =
Enumerable.Range(0, (int)(endDate - startDate).TotalDays + 1)
.Select(i => startDate.AddDays(i));
var datesNotMatched = dateRange.Except(dateList);
令inputDateList
為代表輸入日期的字符串列表,而AttendanceDate
為DateTime的列表對應於輸入字符串。 讓我用dateRangeStart
表示開始范圍,而dateRangeEnd
表示范圍End。 然后,以下代碼將過濾dateDangeStart-dateRangeEnd范圍內的inputDateList。
DateTime inDate;
DateTime dateRangeStart;
DateTime dateRangeEnd;
List<string> inputDateList = new List<string>(){"06/01/2012",
"06/02/2012",
"06/03/2012",
"06/06/2012",
"06/07/2012",
"06/08/2012",
"06/10/2012",
"06/13/2012",
"06/14/2012",
"06/17/2012"};
List<DateTime?> AttendanceDate = inputDateList.Select(x => DateTime.TryParseExact(x, "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out inDate) ? inDate : (DateTime?)null)
.ToList();
DateTime.TryParseExact("06/01/2012", "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateRangeStart);
DateTime.TryParseExact("06/15/2012", "MM/dd/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out dateRangeEnd);
List<DateTime?> datesInRange = AttendanceDate.Where(x => x >= dateRangeStart && x <= dateRangeEnd).ToList();
datesInRange
將是必需的日期列表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.