2017-08-18 48 views
0

我在計算自定義週末數量方面遇到困難時期,並且稍後在指定的日期範圍內查找它們,我必須應用不同的費率基於天(週末,季節日&正常日)。定義自定義週末開始和結束日期和時間並查找其日期範圍內發生的事件

例如,一次旅行開始於16/08/2017 09:00:00並於2017年8月29日結束09:00:00在我的週末開始於週五15:00:00至09年09月:每週00:00。我需要計算在給定的旅程開始和結束時間以及多少個正常日期中發生的週末數,因爲兩者都按不同的費率收費。任何幫助表示讚賞。

請注意,所有的日期和時間將是動態的,是可以改變的,所以尋找一個通用的解決方案

回答

0

如果你的範圍是足夠小,你可以嘗試:

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); 
    } 
+0

行程天範圍可能每天到幾個月不等,但週末的日子和時間因地點而異 –

+0

加上我們需要使這條線變得動態 if(dt.DayOfWeek == DayOfWeek.Saturday || dt.DayOfWeek == DayOfWeek.Sunday) –

相關問題