我很难计算自定义周末的数量,然后在指定的日期范围内找到它们,我必须根据天数(周末、季节日和正常日)应用不同的费率。
例如,一次旅行从 16/08/2017 09:00:00 开始,到 29/08/2017 09:00:00 结束,而我的周末从星期五 15:00:00 开始到星期一 09:00:00每周。我需要计算在给定的行程开始和结束时间有多少个周末以及有多少个正常的日子,因为两者的收费不同。任何帮助表示赞赏。
请注意,所有日期和时间都是动态的并且可以更改,因此请寻找通用解决方案
我很难计算自定义周末的数量,然后在指定的日期范围内找到它们,我必须根据天数(周末、季节日和正常日)应用不同的费率。
例如,一次旅行从 16/08/2017 09:00:00 开始,到 29/08/2017 09:00:00 结束,而我的周末从星期五 15:00:00 开始到星期一 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);
}