Hi, das Jahr geht schon so langsam wieder dem Ende zu, ich habe mich
mit diesem Thema heute mal befaßt, da ich auch eine Angabe der
Kalenderwoche benötige. Mit diesem Code kann man den Beginn der KW 1
des jeweiligen Jahres feststellen. Ich habe mir nicht die Mühe gemacht,
die Aktualisierung des Textes nur dann vorzunehmen, wenn das Jahr
geändert wurde, weil unnützes Beiwerk an dieser Stelle. Laut DIN ist es
so, daß es eine KW 53 gibt, wenn das Jahr nicht mindestens auf einem
Donnerstag beginnt. Der Code oben berücksichtigt das nicht.
Gruß Jens
Code: Alles auswählen
; Datum der Kalenderwoche zuordnen
; Create: 16.10.2005
; Autor : Jens Haipeter
Enumeration
#Window_0
EndEnumeration
Enumeration
#Strg_0
#Text_0
EndEnumeration
; Wochentage
Dim wd.s (6)
wd(0)="Sonntag"
wd(1)="Montag"
wd(2)="Dienstag"
wd(3)="Mittwoch"
wd(4)="Donnerstag"
wd(5)="Freitag"
wd(6)="Samstag"
Quit=#False
; Fenster und Abfrage
If OpenWindow(#Window_0,0,0,420,100,#PB_Window_ScreenCentered|#PB_Window_SystemMenu,"Kalenderwoche des Datums feststellen")
If CreateGadgetList(WindowID(#Window_0))
StringGadget(#Strg_0, 10, 10, 50, 20,"2005",#PB_String_Numeric)
TextGadget (#PB_Any, 70, 14,340, 14,"Geben Sie hier das Jahr ein, von dem Sie die Woche wissen möchten")
TextGadget (#Text_0, 10, 40,400, 14,"")
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Quit=#True
EndSelect
; Kalenderwoche des Jahres bestimmen für den ersten Tag
a=ParseDate("%dd.%mm.%yyyy","1/1/"+GetGadgetText(#Strg_0))
c=DayOfWeek(a)
If c=0; Sonntag
a+86400
ElseIf c>3; Donnerstag/Freitag/Samstag
Repeat
c+1
a+86400
Until c=8
EndIf
; erster Tag in KW 1 des Jahres ist
SetGadgetText(#Text_0,"KW 1 des Jahres beginnt am "+wd(DayOfWeek(a))+", dem "+FormatDate("%dd.%mm.%yyyy",a))
Until Quit
Else
End
EndIf
EndIf
End
PB3.94 bis 6.xx / (Win98/98SE/ME/XPProSP3/WINVista-X32)/WIN7HP-X64/WIN8PRO-X32/WIN10-64
Nichts wissen macht nichts, sich dumm stellen aber schon.