Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: robertpp am 26.09.07 - 14:07:51

Titel: Wieviel KW im Jahr?
Beitrag von: robertpp am 26.09.07 - 14:07:51
Hallo,

Ich hab mich jetzt schon ein wenig gespielt bin aber leider nicht auf eine Lösung gekommen auf die ich mich verlassen kann! Ich glaube ich denke da einfach um die Ecke.

Ich würde gerne wissen, wieviele Kalenderwochen ein Jahr hat (berechnet zb. @Year(@Today) )
Das ganze würde ich dann in ein Combobox Feld hinterlegen. Als Auswahl 1-52 oder 53.

Als weitern Schritt, würde ich dann per Script auf das Feld zugreifen und mir den ersten Tag und den letzten Tag der ausgewählten Woche ausgeben lassen wollen.

Hat das schon mal jemand gemacht?

danke Robert
Titel: Re: Wieviel KW im Jahr?
Beitrag von: m3 am 26.09.07 - 14:11:18
Ja.

Die Frage ist: "Wie lautet Deine Frage?"

http://de.wikipedia.org/wiki/Kalenderwoche#Kalenderwoche sowie die Forumssuche helfen auf jeden Fall weiter.
Titel: Re: Wieviel KW im Jahr?
Beitrag von: pete_bla am 26.09.07 - 14:12:10
Hi,

wer sucht der findet!

http://atnotes.de/index.php?topic=20457.0 (http://atnotes.de/index.php?topic=20457.0)
oder einfach nach "Kalenderwoche" hier im Forum suchen!

Viel Erfolg, Pete(r)
Titel: Re: Wieviel KW im Jahr?
Beitrag von: koehlerbv am 26.09.07 - 14:12:42
Ja. Siehe     
[LotusScript, Formelsprache]: Kalenderwoche: Berechnung mit Formeln und LS (http://atnotes.de/index.php?topic=20457.0) (den Autor kenne ich persönlich  ;D).

Bernhard
Titel: Re: Wieviel KW im Jahr?
Beitrag von: m3 am 26.09.07 - 14:14:03
Ja. Siehe     
[LotusScript, Formelsprache]: Kalenderwoche: Berechnung mit Formeln und LS (http://atnotes.de/index.php?topic=20457.0) (den Autor kenne ich persönlich  ;D).

Bernhard
Der soll sich auch mit Kalenderfunktionen recht gut auskennen, hab ich gehört.  ;) :D
Titel: Re: Wieviel KW im Jahr?
Beitrag von: robertpp am 26.09.07 - 14:19:06
Hallo,

Nein meine Frage lautet aus wievielen Kalenderwochen besteht das Jahr!! Nicht welche Kalenderwoche haben wir gerade! Und ich kenne das Script und @Formula von Bernhard.

Ich kann nicht einfach hergehen und schauen welche Kalenderwoche hat der 31.12 zb weil einmal ist es 52 und einmal 53 und einmal sogar 1.

Also führt das ja nicht zur Lösung!
Titel: Re: Wieviel KW im Jahr?
Beitrag von: klaussal am 26.09.07 - 14:21:29
Aber ich kann ja hingehen und sagen: heute ist der 01.01.XX = welche KW ist das und anschliessend heute ist der 31.12. XX = welche KW ist das und die Differenz ist dann die Anzahl.
Titel: Re: Wieviel KW im Jahr?
Beitrag von: koehlerbv am 26.09.07 - 14:23:27
Du kannst schon vom 31.12. ausgehen. Ist die KW < 52, dann subtrahierst Du vom 31.12. den Wochentag und bist in der höchsten KW des jeweiligen Jahres.

Bernhard
Titel: Re: Wieviel KW im Jahr?
Beitrag von: diali am 26.09.07 - 14:23:42
ob der 31.12. in der KW im neuen Jahr liegt oder nicht hängt davon ab auf welchen Wochentag der 31.12 fällt.
Wenn Weekday < 5, dann KW 1
Titel: Re: Wieviel KW im Jahr?
Beitrag von: robertpp am 26.09.07 - 14:26:53
@klaus: deine Vorschlag führt leider nicht zum Ziel:

01.01.2007 = KW1 2007
31.12.2007 = KW1 2008

Titel: Re: Wieviel KW im Jahr?
Beitrag von: m3 am 26.09.07 - 14:29:08
Zitat
Ein Jahr hat genau dann 53 Kalenderwochen, wenn es mit einem Donnerstag beginnt oder endet
http://de.wikipedia.org/wiki/Kalenderwoche#Kalenderwoche
Titel: Re: Wieviel KW im Jahr?
Beitrag von: robertpp am 26.09.07 - 14:33:24
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

Titel: Re: Wieviel KW im Jahr?
Beitrag von: koehlerbv am 26.09.07 - 14:38:09
Ja, das reicht.

Bernhard
Titel: Re: Wieviel KW im Jahr?
Beitrag von: robertpp am 26.09.07 - 14:45:42
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

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

Danke robert

Titel: Re: Wieviel KW im Jahr?
Beitrag von: robertpp am 26.09.07 - 20:33:24
Ich möchte meine Lösung niemanden vorenthalten:

Code
	Msgbox Datum_KW(39,2007)

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

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

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

gruss robert
Titel: Re: Wieviel KW im Jahr?
Beitrag von: koehlerbv am 26.09.07 - 20:43:36
Es geht einfacher (über die eindeutige Bedingung, wann es 53 Kalenderwochen gibt).

Aber: Der Function Kalenderwoche übergibst Du ein Date-/Time-Variant, dieses erwartet aber einen String. Das passt nicht. Abgesehen davon: Man sollte nie niemals nicht Datumswerte (oder Zahlen) in Strings speichern, übergeben oder verarbeiten, es sei denn, dies ist nur für Frontend-Anzeigen gedacht oder lässt sich wegen strenger Nebenbedingungen gar nicht vermeiden. Man erspart sich dadurch möglichen enormen Ärger.

Bernhard
Titel: Re: Wieviel KW im Jahr?
Beitrag von: DerAndre am 27.09.07 - 08:08:34
Und hier noch ein bischen was zum Thema Kalender generell (http://www.computus.de/)