Das funktioniert auch ganz gut bis auf die Jahre mit 53 Kalenderwochen. Da muss noch eine Abfrage rein:
Code:
Dim KW As Integer = 0
Dim Jahr As Integer = System.DateTime.Now.Year
Dim Monat As Integer = System.DateTime.Now.Month
Dim Tag As Integer = System.DateTime.Now.Day
Dim DT0 As New System.DateTime(Jahr, Monat, Tag)
Dim TagImJahr As Integer = DT0.DayOfYear
Dim dt1 As New System.DateTime(Jahr, 1, 1)
Dim dt31 As New System.DateTime(Jahr, 12, 31)
Dim TagderWocheAnfangJahr As Integer = dt1.DayOfWeek
Dim TagderWocheEndeJahr As Integer = dt31.DayOfWeek
KW = Cint((((TagderWocheAnfangJahr + 2) Mod 7) + 3 + TagImJahr) \ 7)
If KW = 0 Then
Dim dt2 As New System.DateTime(Jahr - 1, 12, 31)
Dim TagderWocheEndeJahrVorher As Integer = dt2.DayOfWeek
Dim TageLetztesJahr As Integer = dt2.DayOfYear
KW = Cint((((TagderWocheEndeJahrVorher + 2) Mod 7) + 3 + TageLetztesJahr) \ 7)
ElseIf KW = 53 Then
If TagderWocheAnfangJahr = 4 Or TagderWocheEndeJahr = 4 Then
Else
KW = 1
End If
End If
' Beispiel: Wochendatei erzeugen für Protokollsegment 5
VOK.SetProtDBName 5, "KW_" & KW.ToString() & "_" & system.DateTime.Now.ToString("yyyy")
' Beispiel: Schreiben als ASCII in Gruppe 0
VDF.WriteAscii 0,50,"KW_" & KW.ToString() & "_" & System.DateTime.Now.ToString("yyyy")