2013-08-22 113 views
0

基本上我的網上商店有3種產品。每個細節都存儲在List aray中。然而計算出貨日期在工作日

  • 產品1個船在3個工作日內
  • 產品2艘第二天工作日
  • 產品3需要7個工作日內出貨

我將如何計算到達的Estimated dateETDA(不包括週六和週日)瞭解產品何時到達。

例如:客戶訂單產品1,下訂單的日期是星期四,因此產品1需要3個工作日才能發貨,換句話說,它將在週二到貨。我將如何在c#中執行此操作,以顯示將在星期二抵達的用戶。

+0

什麼數據存儲您使用的? SQL,xml,硬編碼? – pingoo

+0

它現在硬編碼 – Chris

+1

如果產品1需要3個工作日才能發貨,並且客戶在星期四訂購了它,那麼它應該在週二發貨。它會到達的時候是另一個故事。 – andi

回答

1

我會被誘惑做蠻力的辦法,只是因爲它節省腦力:

int workingDays = 3;//get from item 
DateTime dt = DateTime.Today(); 
while(workingDays > 0) 
{ 
    dt = dt.AddDays(1); 
    if(dt.DayOfWeek != DayOfWeek.Saturday && dt.DayOfWeek != DayOfWeek.Sunday) 
     workingDays--; 
} 
//dt is now the correct day 
+0

谷歌搜索節省腦力:http://stackoverflow.com/questions/1044688/add-business-days-and-getbusinessdays –

+1

@AhmedKRAIEM:是的,但我仍然更喜歡我的。它要短得多,而且表現會很小。除非你開始做大量的工作日,但這將是愚蠢的 – musefan

+0

我的也可能更適合允許動態確定哪些天被歸類爲工作日 – musefan

1

您可以使用此方法:

public DateTime DayOfArrival(DateTime startDate, int numberOfWordkingDays) 
{ 
    var result = startDate; 
    var counter = 0; 
    while (counter < numberOfWordkingDays) 
    { 
     if (result.DayOfWeek != DayOfWeek.Saturday && result.DayOfWeek != DayOfWeek.Sunday) 
      counter++; 
     result = result.AddDays(1); 
    } 
    return result; 
}