[英]Check if date range is sequential in c# except Saturday and Sunday
我想確定日期時間列表是否是連續的。
此外,如果列表中缺少的日期時間是星期六或星期日,則該列表也
例子
是順序的
1.
不是順序的
3.
我想念星期六,星期天的邏輯。 這是我的片段
public static bool IsSequential(IEnumerable<DateTime> dates)
{
var startDate = dates.FirstOrDefault();
return dates
.Select((d, i) => new {Date = d, Index = i})
.All(d => (d.Date - startDate).Days == d.Index);
}
你可能會做這樣的事情。 當日期按升序和降序排列時,它應該可以工作。
public static bool IsSequential(this IList<DateTime> dates)
{
DateTime currentDate;
DateTime nextDate;
for (int index = 0; index < dates.Count - 1; index++)
{
currentDate = dates[index];
nextDate = dates[index + 1];
var dayDiff = Math.Abs((nextDate.Date - currentDate.Date).Days);
var areSequentialDates = dayDiff == 1 ||
(dayDiff == 3 && (currentDate.DayOfWeek == DayOfWeek.Friday || nextDate.DayOfWeek == DayOfWeek.Friday));
if (!areSequentialDates)
return false;
}
return true;
}
另一種方法,假設降序:
public static bool IsSequential(IEnumerable<DateTime> dates)
{
if (dates != null)
{
DateTime nextDate = dates.FirstOrDefault().Date;
foreach (DateTime dt in dates)
{
if (!dt.Date.Equals(nextDate))
{
return false;
}
nextDate = dt.Date.AddDays(dt.DayOfWeek == DayOfWeek.Monday ? -3 : -1);
}
}
return true;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.