Die Community zu .NET und Classic VB.
Menü

FAQ 0028: Wie ermittle die Kalenderwoche und deren Daten?

 von 

Frage 

Ich kenne die Kalenderwoche eines Jahres und möchte das genaue Datum des ersten Tages dieser Woche berechnen. Wie geht das?

Ich habe ein Datum und möchte berechnen, in welche Kalenderwoche es fällt. Wie geht das?

Antwort  

Die Kalenderwoche, in die ein Datum fällt, kann man folgendermaßen berechnen:

Format$(Datum, "ww", vbMonday, vbFirstFourDays)

Listing 1: Kalenderwoche berechnen

pks hatte eine Lösung vorgeschlagen, die von einem unserer Stammgäste, der r.mueller@sz-online.de genannt werden möchte, noch erweitert wurde. Hier das Ergebnis:

Function DayOfWeek(ByVal lWeek As Long, ByVal lYear As Long) As Date
    If CLng(Format$(DateSerial(lYear, 1, 1), "ww", vbMonday, _
                                              vbFirstFourDays)) = 1 Then
        DayOfWeek = DateSerial(lYear, 1, 1) - _
                   CLng(Format(DateSerial(lYear, 1, 1), "w", vbMonday, _
                                               vbFirstFourDays)) + 1 + _
                                                (lWeek - 1) * 7
    Else
        DayOfWeek = DateSerial(lYear, 1, 1) - _
                   CLng(Format(DateSerial(lYear, 1, 1), "w", vbMonday, _
                                               vbFirstFourDays)) + 1 + _
                                                    (lWeek) * 7
    End If
End Function

Listing 2: Ersten Tag einer Kalenderwoche ermitteln

Einen alternativen Algorithmus hat Udo Schmidt vorgeschlagen:

Function DayOfWeek(ByVal lWeek As Long, ByVal lYear As Long, _
    Optional FirstDay As VbDayOfWeek = vbMonday, _
    Optional FirstWeek As VbFirstWeekOfYear = vbFirstFourDays) As Date
    
    Dim D1 As Date
    Dim N1 As Long
    
    D1 = DateSerial(lYear, 1, 1)
    N1 = Weekday(D1, FirstDay)
    
    If DatePart("ww", D1, FirstDay, FirstWeek) = 1 Then
        N1 = FirstDay - N1 - 8
    Else
        N1 = ((8 + N1 - FirstDay) Xor 7) - 16
    End If
        
    DayOfWeek = D1 + N1 + lWeek * 7
End Function

Listing 3: Ersten Tag einer Kalenderwoche ermitteln

Ihre Meinung  

Falls Sie Fragen zu dieser FAQ haben, Ihre Erfahrung mit anderen Nutzern austauschen möchten oder auf eine Ergänzung hinweisen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.