Domino 9 und frühere Versionen > ND6: Entwicklung

Wieviel KW im Jahr?

<< < (3/4) > >>

m3:

--- Zitat ---Ein Jahr hat genau dann 53 Kalenderwochen, wenn es mit einem Donnerstag beginnt oder endet
--- Ende Zitat ---
http://de.wikipedia.org/wiki/Kalenderwoche#Kalenderwoche

robertpp:
Würde es dann reichen zu kontrollieren ob:

@Weekday@Date(@Year(@Today); 1;1) = 5;
oder
@Weekday@Date(@Year(@Today); 12;31) = 5;
Wenn ja dann 53 sonst 52?


--- Zitat ---Das kommt die nächsten 20 Jahr eigentlich eh nur 1mal vor 2009
--- Ende Zitat ---

koehlerbv:
Ja, das reicht.

Bernhard

robertpp:
Danke,

und jetzt noch der umgekehrte Weg:

Wenn ich dann zb. KW 39 auswähle, wie komm ich dann per Script zurück auf das aktuelle Startdatum der Woche also Weekday=1?

Ich hab folgendes Script gefunden:

--- Code: ---Function Datum_KW(nKW As Integer, nYear As Integer) As Date

  On Error GoTo Err_Datum_KW
 
  Dim d As Integer
  Dim vDate  As Date
 
  vDate = "01.01." & CStr(nYear)
  For d = 0 To 6
    If Format(vDate + d, "ww", vbMonday, vbFirstFourDays) = 1 Then
      Datum_KW = vDate + d + (nKW - 1) * 7 - 2
      Datum_KW = Datum_KW - (Weekday(Datum_KW, vbMonday) - 1)
    End If
  Next d
  Exit Function

Err_Datum_KW:
  MsgBox Err.Description
End Function

--- Ende Code ---

Sieht da jemand ein Problem, außer das es noch an Notes angepasst werden muss, oder sollte das funktionieren?

Danke robert

robertpp:
Ich möchte meine Lösung niemanden vorenthalten:


--- Code: --- Msgbox Datum_KW(39,2007)

--- Ende Code ---


--- Code: ---Function Datum_KW(Woche As Integer, Jahr As Integer)
Dim intTag As Integer, intWoche As Integer
If Jahr = 0 Then
Datum_KW = 0
Exit Function
End If
intTag = 1
intWoche = KalenderWoche(Datenumber(Jahr, 1, 1))
If intWoche <> 1 Then
Do Until KalenderWoche(Datenumber(Jahr, 1, intTag)) = 1
intTag = intTag + 1
Loop
Else
Do Until KalenderWoche(Datenumber(Jahr, 1, intTag)) <> 1
intTag = intTag - 1
Loop
intTag = intTag + 1
End If
Datum_KW = Datenumber(Jahr, 1, intTag) + (Woche - 1) * 7
End Function

--- Ende Code ---


--- Code: ---Function KalenderWoche(Datum As String) As Integer
Dim tmp As Double
Dim dDay As NotesDateTime
Dim dDaytemp As NotesDateTime
Set dDay = New NotesDateTime(Datum)
Set dDaytemp =New NotesDateTime(Datum)
Call dDay.AdjustDay((8 - Weekday(dDay.DateOnly)) Mod 7  - 3)
tmp = Datenumber(Year(dDay.DateOnly), 1, 1)
KalenderWoche = ((Cdat(dDaytemp.DateOnly)) - (Cdat(tmp - 3 + (Weekday(tmp) +1) Mod 7))) / 7 + 1
End Function

--- Ende Code ---

Vielleicht geht es einfacher auch! Aber es funktioniert! So ermittle ich anhand der KW den ersten Tag in der Woche.

gruss robert

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln