![]() |
Delphi-Version: 10.4 Sydney
WeekofTheYear ?
Hi zusammen
Ich habe vor vielen Jahren einen Kalender programmiert und dachte mir, ich müsse den nur ein kleines bisschen Anpassen - aber Pustekuchen!! Statt nun die damaligen Strukturen umzubauen, schreib ich mir besser eine neue Prozedur, die sich aus Teilen aus DateUtils logisch - und wahrscheinlich mit weniger Code - aufbaut. Und so begine ich, indem ich den Jahresbegin als TDateTime hole. Davon will ich nun auf die aktuelle Woche und deren begin zugreifen
Delphi-Quellcode:
procedure TCompletYear2Frame.VerticalMonths;
var i,j,k,Nr,x,y,ZV : Integer; Jahr,Woche: Word; LToday : String; LYearDate, WoStart,Datum:TDateTime; begin LYearDate := StartOfTheYear(Date); Nr := WeekOfTheYear(LYearDate); // WeekofTheYear gibt einen Integer für die Wochennummer(?) zurück, der in 'Nr' gespeichert wird. WoStart := StartOfTheWeek(NR); // So, wie ich die Help verstanden habe, gibt StartOfTheWeek das Anfangsdatum der abgefragten Woche zurück // WoStart müsste demnach das Start-Datum der Woche enthalten Showmessage('LYearDate := ' + DatetoStr(LYearDate) + sLineBreak + 'WeekOfTheYear := ' + IntToStr(Nr) + sLineBreak + 'WoStart := '+ DateToStr(WoStart)); end; Und das kommt dabei heraus: Zitat:
Gruss Delbor |
AW: WeekofTheYear ?
WeekOfTheYear ist nicht eindeutig, da je nachdem, wo man sich befindet (Land) entweder die 1. Woche oder die Woche mit dem 1. Montag (bzw. 1 Tag der Woche) gemeint ist.
EDIT: Du Funktion ist schon eindeutig, ist aber u.U. nicht das gewünschte. Durch Verwendung der 2. überladenen Variante kann man das Fehlverhalten aber erkenn und korrigieren. |
AW: WeekofTheYear ?
Zitat:
![]() ![]() Zitat:
|
AW: WeekofTheYear ?
Delphi-Quellcode:
LYearDate := StartOfTheYear(Date); // => 01.01.2020
Nr := WeekOfTheYear(LYearDate); // => 1 = 1. Woche des Jahres 2020 WoStart := StartOfTheWeek(Nr); // => Start der Woche in den der 30.12.1899 fällt. // (TDateTime = 1 => 30.12.1899) // und diese Woche begann am 25.12.1899. // Probier es doch mal mit dem Beginn der Woche, in die der 01.01.2020 gefallen ist ;-) WoStart := StartOfTheWeek(LYearDate); // => Start der ersten Woche des Jahres 2020 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz