我有一個日期的集合是工作日,我有一個開始日期。當我將TimeSpan
添加到開始日期DateTime
時,我必須確保在TimeSpan
中添加日期時,我跳過節假日。有關我如何做到這一點的任何建議?C#將TimeSpan添加到日期時間考慮BusinessDays
1
A
回答
-1
這樣的事情呢?
public DateTime AddBusinessDays(List<DateTime> businessDays, DateTime startDate, TimeSpan span)
{
// Add the initial timespan
DateTime endDate = startDate.Add(span);
// Calculate the number of holidays by taking off the number of business days during the period
int noOfHolidays = span.Days - businessDays.Where(d => d >= startDate && d <= endDate).Count();
// Add the no. of holidays found
endDate.AddDays(noOfHolidays);
// Skip the end date if it lands on a holiday
while (businessDays.Contains(endDate))
endDate = endDate.AddDays(1);
return endDate;
}
+0
爲什麼downvote? – w69rdy 2014-01-20 11:41:34
0
您按照原樣添加時間段。完成之後,您將迭代搜索集合中的日期,該日期位於原始日期和新日期之間。對於每次碰到每次碰撞時,您都會在新的日期再添加一天,然後重複,直到您完成日期的收集。如果你的datecollection被排序,這可以被優化。
0
您需要考慮在任何添加的日期範圍內有多少個非營業日。
在20天的範圍內,可能有6個非營業日。 由於新的日期範圍也可能包含非營業日,因此您無法將此天數添加到最後一天。您必須添加天,然後找出如何,你已經添加了這些日子不少也是假期:
下面是一些非測試的P碼
Add Timespan to date (DateIn,timespan)
finalDateTime = (fromDate + timespan)
fromDate = DateIn.date
toDate = finalDateTime.date
repeat
iDays = GetHolidaysBetween (fromDate, toDate)
finalDateTime = (finalDateTime + iDays)
fromDate = (toDate+1)
toDate = (toDate+iDays)
until (iDays=0)
return finalDateTime
end_function
相關問題
- 1. 將TimeSpan添加到給定的日期時間
- 2. 如何添加營業時間到日期考慮不添加週末? - Java的
- 3. 爪哇 - 格式日期時間考慮TimeZone的考慮
- 4. 轉換日期和時間考慮DTS
- 5. 日期比較只考慮時間(PHP)
- 6. 不考慮時間比較Unix時間戳到日期
- 7. 將日期時間間隔添加到日期時間
- 8. 返回日期+考慮到時差
- 9. 查詢日期時間範圍,同時考慮到時區
- 10. SQL Server:將日期時間添加到日期時間字段?
- 11. 在excel中將時間作爲下一個日期時間考慮到
- 12. 添加到日期時間
- 13. 將時間跨度添加到日期?
- 14. 將日期/時間添加到JFreeChart圖
- 15. 兩個日期時間之間的TimeSpan
- 16. 加入日期SQLalchemy考慮只有日期而不是一天中的時間
- 17. Solr的dateRangeField獲取確切的數據只考慮日期,不考慮時間
- 18. 考慮到時間差異
- 19. 從考慮夏令時的時代獲取日期和時間
- 20. 將日期添加到mysql日期時間行
- 21. 將日期添加到日期時間查詢
- 22. 將日期添加到日期時間格式
- 23. 將1個日曆月的時間間隔添加到日期
- 24. TimeSpan將分鐘添加到零小時
- 25. 在C中添加時間到日期時間#
- 26. 如何顯示日期時間考慮與時區
- 27. 添加前導零日期時間C#
- 28. C#定時器考慮回調時間
- 29. 將日期時間值添加到以前的日期時間值
- 30. 使用當前日期時間將日期時間添加到數據表?
你是什麼節日呢?週末?銀行假期?你去西班牙旅行? – w69rdy 2011-03-17 09:27:41
我指定我有一組日期,我把它視爲工作日 – Aks 2011-03-17 09:30:05
是的,你也指定你想跳過假期,但是你還沒有指定'假期'的含義? – w69rdy 2011-03-17 09:31:17