Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 有趣的逻辑,以日期减去日期,并获得diffdate vb.net_Sql_Vb.net_Math_Logic - Fatal编程技术网

Sql 有趣的逻辑,以日期减去日期,并获得diffdate vb.net

Sql 有趣的逻辑,以日期减去日期,并获得diffdate vb.net,sql,vb.net,math,logic,Sql,Vb.net,Math,Logic,好的,我想不出用vb.net实现这一点的算法 这是3个变量 Dim DateFrom as date = '01/09/2015' Dim DateNow as date = Date.Now Dim Holiday() as date '' <-- List of holiday dates Dim DateFrom as date='01/09/2015' Dim DateNow as date=date.Now Dim Holiday()作为日期“”那么您想确定两个日期之间的工

好的,我想不出用vb.net实现这一点的算法

这是3个变量

Dim DateFrom as date = '01/09/2015'

Dim DateNow as date = Date.Now

Dim Holiday() as date '' <-- List of holiday dates
Dim DateFrom as date='01/09/2015'
Dim DateNow as date=date.Now

Dim Holiday()作为日期“”那么您想确定两个日期之间的工作日数

您可以使用以下LINQ查询:

Dim DateFrom As Date = #9/1/2015#
Dim Holiday() As Date = {#9/4/2015#}
Dim Weekend() As DayOfWeek = {DayOfWeek.Saturday, DayOfWeek.Sunday}

Dim days As Int32 = (Date.Today - DateFrom).Days + 1 '+ 1 to include end day '
Dim workingDaysBetween =
    From d In Enumerable.Range(0, days)
    Let day = DateFrom.AddDays(d)
    Where Not Weekend.Contains(day.DayOfWeek) AndAlso Not Holiday.Contains(day)

Dim countDays As Int32 = workingDaysBetween.Count()

我想你可以用这样的方法来解决这个问题:

Dim intTotalDays As Integer = 0

Dim dtStartDate As New DateTime(2015, 10, 1)
Dim dtEndDate As New DateTime(2015, 10, 31)

Dim Holidays As DateTime() = {
    New DateTime(2015, 10, 15),
    New DateTime(2015, 10, 17)
}

For i As Integer = 0 To DateDiff(DateInterval.Day, dtStartDate, dtEndDate)

    Dim dtDay As DateTime = DateAdd(DateInterval.Day, i, dtStartDate)

    If Not dtDay.DayOfWeek = DayOfWeek.Saturday And Not dtDay.DayOfWeek = DayOfWeek.Sunday And Not Holidays.Contains(dtDay) Then
        intTotalDays += 1
    End If

Next i

MsgBox(intTotalDays)

谢谢你。我通常不使用linq,但谢谢:)谢谢我想这正是我想要的:D谢谢。事实上,vb.net上不存在datediff,但nvrm我为它创建了一个函数。哈哈,不,它存在:。您需要Microsoft.VisualBasic名称空间,该名称空间通常作为默认名称添加到新项目中。如果您对Microsoft.VisualBasic名称空间有任何问题,请检查此链接。VisualBasic名称空间:ty tezzo!这真的很有帮助。