![]() |
Re: Kalenderwochen Funktion Falsch?
Zitat:
Die Nachkommastellen dürfen keinesfalls einfach ignoriert werden - es sei denn man legt Wert auf Fehler. |
Re: Kalenderwochen Funktion Falsch?
Zitat:
Ich hab mal in die Funktion die Zwischenwerte eingefügt, da wird dann wohl jedem klar, daß ein simples Trunc nicht ausreicht. Aufruf : XWeekOfDate(EncodeDate(2009,01,01));
Delphi-Quellcode:
Ein Trunc (ohne vorher 0.5 zu addieren) würde als Resultat 0 ergeben.
function xWeekOfDate(A: TDateTime): Integer;
var Day: Integer; Y,M,D: Word; n:extended; begin A := Int(A); // A=39814 Day := DayOfWeek(A) -1; // Day=4 if Day <= 0 then Day := 7; // Day=4 DecodeDate(A +4 -Day, Y, M, D); // Y=2009 Result := Trunc(((A +8 -Day) - EncodeDate(Y, 1, 1)) / 7); // Result = 0 // A+8-Day = 39818 // EncodeDate(Y,1,1) = 39814 // (A+8-Day)-EncodeDate(Y,1,1) = 4 // ((A+8-Day)-EncodeDate(Y,1,1))/7 = 0.5714285713 // Result = Trunc(0.5714285713) // Result = 0 Result := Trunc(0.5+((A +8 -Day) - EncodeDate(Y, 1, 1)) / 7); // Result = 1 // Result = Trunc(0.5 + 0.5714285713) // Result = Trunc(1.0714285713) // Result = 1 end; Ein Trunc (bei vorheriger addition von 0.5) ergibt das korrekte Resultat 1. Im Stillen habe ich gehofft, daß negaH mal ein paar Kommentare abgibt - scheint ihm wohl zu albern zu sein. Übrigens @negaH : eine sehr elegante Lösung hast da gefunden. Es wäre schön, wenn alle, die so oft "aus der Hüfte geschossene" Kommentare abgeben, vorher prüfen, ob das, was sie schreiben wollen auch korrekt ist. |
Re: Kalenderwochen Funktion Falsch?
Zitat:
Im Übrigen sollte man innerhalb von 24 Stunden den http://www.delphipraxis.net/template.../icon_edit.gif-Button nutzen, wenn man noch etwas hinzufügen möchte. ;) |
Re: Kalenderwochen Funktion Falsch?
Zitat:
Falls sich der Hinweis darauf bezieht, daß ich kurz hintereinander zwei Beiträge geschrieben habe : Ich hab das ganz bewußt in zwei Beiträge gepackt, weil ich auf zwei Beiträge von zwei Usern reagiert habe. |
Re: Kalenderwochen Funktion Falsch?
Moin moin,
@Klaus: :thumb: Zitat:
(warum auch immer). Ich hätte wohl erstmal versuchen sollen, den dahinter liegenden Algo zu verstehen :oops: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 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