定义自定义周末开始和结束日期和时间并查找其日期范围内发生的事件
问题描述:
我在计算自定义周末数量方面遇到困难时期,并且稍后在指定的日期范围内查找它们,我必须应用不同的费率基于天(周末,季节日&正常日)。定义自定义周末开始和结束日期和时间并查找其日期范围内发生的事件
例如,一次旅行开始于16/08/2017 09:00:00并于2017年8月29日结束09:00:00在我的周末开始于周五15:00:00至09年09月:每周00:00。我需要计算在给定的旅程开始和结束时间以及多少个正常日期中发生的周末数,因为两者都按不同的费率收费。任何帮助表示赞赏。
请注意,所有的日期和时间将是动态的,是可以改变的,所以寻找一个通用的解决方案
答
如果你的范围是足够小,你可以尝试:
public class DateTimeRange
{
private DateTime Start { get; set; }
private DateTime End { get; set; }
public DateTimeRange(DateTime start, DateTime end)
{
Start = start;
End = end;
}
public int DayOffsCount()
{
var current = Start;
var dayOffsCount = 0;
while (current < End)
{
if (IsDayOff(current))
{
dayOffsCount++;
}
current = current.AddDays(1);
}
return dayOffsCount;
}
}
public bool IsDayOff(DateTime dt)
{
if (dt.DayOfWeek == DayOfWeek.Saturday || dt.DayOfWeek == DayOfWeek.Sunday)
return true;
return IsHoliday(dt);
}
行程天范围可能每天到几个月不等,但周末的日子和时间因地点而异 –
加上我们需要使这条线变得动态 if(dt.DayOfWeek == DayOfWeek.Saturday || dt.DayOfWeek == DayOfWeek.Sunday) –