Den ersten Tag einer Woche bestimmen

18/12/2009 - 11:15 von Adam Loch | Report spam
Hallo NG,

Für die Bestimmung des ersten Tages einer Woche benutze ich folgende Funktion:

Public 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

Nun liefert diese aber für die Woche 53 in 2010 den 03.01.2011 als Ergebnis.

Warum?

MfG
 

Lesen sie die antworten

#1 Claus Kircher
18/12/2009 - 11:47 | Warnen spam
Hallo Adam,

ein Jahr hat 52 Wochen, also ist die 53. Woche, die erste Woche des nàchsten Jahres ...
... und der 03.01.2011 ist ein Montag, stimmt doch alles, oder ?

Gruß
Claus

Adam Loch schrieb:
Hallo NG,

Für die Bestimmung des ersten Tages einer Woche benutze ich folgende Funktion:

Public 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

Nun liefert diese aber für die Woche 53 in 2010 den 03.01.2011 als Ergebnis.

Warum?

MfG

Ähnliche fragen