qui abbiamo fatto anche il calcolo delle giornate lavorative fra due date
http://forum.html.it/forum/showthrea...ght=lavorativi

codice:
Public Function isFestivo(ByVal giorno As String, ByVal mese As Integer) As Boolean
        Dim appo As DateTime
        Dim mess As Boolean
        Dim ggPasquetta As Integer
        Dim mmPasquetta As Integer
        Dim dayPasquetta As String

        dayPasquetta = Calcolo_Pasquetta(Year(Now))
        mmPasquetta = dayPasquetta.Substring(0, 2)
        ggPasquetta = dayPasquetta.Substring(3)
        mess = False

        If IsDate(giorno.ToString + "/" + mese.ToString + "/" + Year(Date.Now).ToString) Then
            appo = giorno.ToString + "/" + mese.ToString + "/" + Year(Date.Now).ToString
            If (mmPasquetta = mese And (ggPasquetta = giorno Or ggPasquetta + 1 = giorno)) Or _
                  (giorno.ToString = 1 And mese.ToString = 1) Or _
                  (giorno.ToString = 6 And mese.ToString = 1) Or _
                  (giorno.ToString = 25 And mese.ToString = 4) Or _
                  (giorno.ToString = 1 And mese.ToString = 5) Or _
                  (giorno.ToString = 2 And mese.ToString = 6) Or _
                  (giorno.ToString = 29 And mese.ToString = 6) Or _
                  (giorno.ToString = 15 And mese.ToString = 8) Or _
                  (giorno.ToString = 1 And mese.ToString = 11) Or _
                  (giorno.ToString = 8 And mese.ToString = 12) Or _
                  (giorno.ToString = 25 And mese.ToString = 12) Or _
                  (giorno.ToString = 26 And mese.ToString = 12) Or _
                  appo.DayOfWeek() = DayOfWeek.Saturday Or appo.DayOfWeek() = DayOfWeek.Sunday Then
                'è sabato o domenica
                mess = True
            End If
        ElseIf Not IsDate(giorno.ToString + "/" + mese.ToString + "/" + Year(Date.Now).ToString) And _
            IsNumeric(giorno) Then
            'Non è un giorno facente parte del mese(es: se il mese è di 30 il 31/mese/anno nn fa parte del mese)
            mess = True
        End If
        Return mess
    End Function

    Public Function Calcolo_Pasquetta(ByVal iAnno As Integer) As String
        Dim a, b, c, d, e, m, n, giorni As Integer
        Dim giorno, mese As String

        Select Case iAnno
            Case 30 To 1582
                m = 15
                n = 6
            Case 1700 To 1799
                m = 23
                n = 3
            Case 1800 To 1899
                m = 23
                n = 4
            Case 1900 To 2099
                m = 24
                n = 5
            Case 2100 To 2199
                m = 24
                n = 6
            Case 2200 To 2299
                m = 25
                n = 0
            Case 2300 To 2399
                m = 26
                n = 1
            Case 2400 To 2499
                m = 25
                n = 1
        End Select


        a = iAnno Mod 4
        b = iAnno Mod 7
        c = iAnno Mod 19
        d = (19 * c + m) Mod 30
        e = (2 * a + 4 * b + 6 * d + n) Mod 7

        giorni = 22 + d + e

        If (giorni <= 31) Then
            giorno = giorni
            mese = 3
        End If

        If (giorni = 57 And d = 29 And e = 6) Or (giorni = 56 And c > 10 And d = 28 And e = 6) Then
            giorno = giorni - 38
            mese = 4
        End If

        If giorni > 31 Then
            giorno = giorni - 31
            mese = 4
        End If

        If (mese.ToString).Length = 1 Then
            mese = CType(0, String) + CType(mese, String)
        End If
        If (giorno.ToString).Length = 1 Then
            giorno = "0" + giorno.ToString
        End If
        Calcolo_Pasquetta = mese & "|" & giorno
    End Function