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

Rispondi quotando