計算自日期以來工作天數的最簡單方法是什麼?首選VB.NET,但C#沒問題。.NET Date比較:計算自日期以來的工作天數?
而「工作日」是指除週六和週日外的所有日子。如果算法也可以考慮不應該算作工作日的特定「排除」日期列表,那將是肉汁。
在此先感謝貢獻的天才。
計算自日期以來工作天數的最簡單方法是什麼?首選VB.NET,但C#沒問題。.NET Date比較:計算自日期以來的工作天數?
而「工作日」是指除週六和週日外的所有日子。如果算法也可以考慮不應該算作工作日的特定「排除」日期列表,那將是肉汁。
在此先感謝貢獻的天才。
這將做你想做的。它應該很容易轉換爲VB.NET,但我能夠做到這一點太長了。
DateTime start = DateTime.Now;
DateTime end = start.AddDays(9);
IEnumerable<DateTime> holidays = new DateTime[0];
// basic data
int days = (int)(end - start).TotalDays;
int weeks = days/7;
// check for a weekend in a partial week from start.
if (7- (days % 7) <= (int)start.DayOfWeek)
days--;
if (7- (days % 7) <= (int)start.DayOfWeek)
days--;
// lose the weekends
days -= weeks * 2;
foreach (DateTime dt in holidays)
{
if (dt > start && dt < end)
days--;
}
Here's SQL Server的一種方法。在頁面上也有一個vbscript方法。不知道你要求什麼,我知道。
最簡單的方法可能是類似
DateTime start = new DateTime(2008, 10, 3);
DateTime end = new DateTime(2008, 12, 31);
int workingDays = 0;
while(start < end) {
if(start.DayOfWeek != DayOfWeek.Saturday
&& start.DayOfWeek != DayOfWeek.Sunday) {
workingDays++;
}
start = start.AddDays(1);
}
它可能不是最有效的,但它確實允許假期的列表便於檢查。
DateDiff以及a few other Date* functions是VB.NET特有的,並且通常是C#開發人員羨慕的主題。但是,不確定在這種情況下它會非常有幫助。
我們將兩個CodeProject文章結合起來,以獲得完整的解決方案。我們的圖書館不夠簡潔,無法發佈爲源代碼,但我可以向您指出我們用來實現我們所需的兩個項目。與CodeProject文章一樣,閱讀評論,其中可能有重要的信息。
計算工作日:http://www.codeproject.com/KB/cs/busdatescalculation.aspx
替代工作日計算:http://www.codeproject.com/KB/cs/datetimelib.aspx
計算假期:http://www.codeproject.com/KB/dotnet/HolidayCalculator.aspx
(無碼) -
撥弄開始放假的日期數量/結束日期,以便他們落在週一到週一,然後加回差
[道歉無碼泛泛而談,它的晚]
[CF endDate.Subtract(startDate).TotalDays]
這裏是史蒂夫在VB式的無假日減法樣本:
Function CalcBusinessDays(ByVal DStart As Date, ByVal DEnd As Date) As Decimal
Dim Days As Decimal = DateDiff(DateInterval.Day, DStart, DEnd)
Dim Weeks As Integer = Days/7
Dim BusinessDays As Decimal = Days - (Weeks * 2)
Return BusinessDays
Days = Nothing
Weeks = Nothing
BusinessDays = Nothing
End Function
你的意思是檢查的週末。不是假期。 :D – ferventcoder 2008-10-03 06:36:37