计算自日期以来工作天数的最简单方法是什么?首选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