计算visual basic中两个日期之间的工作日数

Jam*_*mes 1 vb.net ssrs-2008

我是一个SQL人员,但我需要一个函数来计算VB.NET中两个日期之间的工作日数.我不需要担心假期.不幸的是,我的尝试是徒劳的.非常感激

这将包含在Reporting Service 2008 R2中的自定义代码中.

Gab*_*abe 8

试试这个.我修改了我一直在使用的现有功能.这将在SSRS 2008中有效.请注意,您也可以使用C#编写代码,如果您对此更加熟悉,并且在部署之后,只需从报告中引用程序集即可.1

public Shared Function Weekdays(ByRef startDate As Date,  ByRef endDate As Date   ) As integer
    dim numWeekdays as Integer
    dim totalDays as Integer
    dim WeekendDays as Integer
    numWeekdays = 0
    WeekendDays = 0

    totalDays = DateDiff(DateInterval.Day, startDate , endDate ) + 1

    for i as integer = 1 to totalDays

        if DatePart(dateinterval.weekday,startDate) = 1 then
            WeekendDays = WeekendDays + 1
        end if
        if DatePart(dateinterval.weekday, startDate) = 7 then
            WeekendDays = WeekendDays + 1
        end if
            startDate = DateAdd("d", 1, startDate)
    next

    numWeekdays  = totalDays - WeekendDays 

    return numWeekdays  
End Function 
Run Code Online (Sandbox Code Playgroud)

  • 在此函数中要注意的一点是,您正在修改startDate输入参数,这可能会在调用此函数的代码中造成不必要的后果。您可以通过声明另一个DateTime来解决此问题,如下所示:将workStartDate设置为New DateTime(startDate.Ticks)。同样,不需要在第一个totalDays分配末尾的+1。将结果加1。 (2认同)

MRA*_*RAB 5

您无需检查这些日期之间的每一天是否为工作日.

如果有n几天,则有int(n / 7)完整的周,每个星期有5个工作日,所以这是5 * int(n / 7)工作日.

然后,您需要检查剩余部分周(0..6天)的天数.