![]() |
Re: Prüfe Datum ob älter als ein Jahr
Zitat:
Vor allem wollte ich drauf hinweisen, dass man Sachen wie Datumsberechnungen nicht ständig neu erfinden muss, das haben i.A. schon frühere Generationen gelöst. Irgendwo im Internet gibt es Algorithmen für fast jedes Kalendersystem, das die Menschheit erfunden hat, nötigenfalls auch vom jüdischen Kalender in den der Azteken. Gruss Reinhard |
Re: Prüfe Datum ob älter als ein Jahr
Zitat:
Die Methode von Wolfgang Mix ist ja auch schon von vor 1992 und zumindest was Schaltjahre angeht, angenehm resistent. |
Re: Prüfe Datum ob älter als ein Jahr
Hallo Jungs,
sagt mal, gibt es da nicht eine Funktion IsLeapYear oder so ähnlich, im Standard, welche angibt ob es sich um ein Schaltjahr handelt oder auch nicht? Grüße Euer GreenHorn |
Re: Prüfe Datum ob älter als ein Jahr
Hi,
wozu so eine Funktion wenn es Mod gibt? Einfach den 4. Modulus des Jahres ausrechnen also zum Beispiel 1996 mod 4. Wenn dann 0 raus kommt war wie in diesem Fall 1996 ein Schaltjahr. ... 1996 mod 4 = 0 <- Schaltjahr 1997 mod 4 = 1 1998 mod 4 = 2 1999 mod 4 = 3 2000 mod 4 = 0 <- Schaltjahr 2001 mod 4 = 1 ... Gruß Stormy |
Re: Prüfe Datum ob älter als ein Jahr
Zitat:
ein Erdenjahr ist nunmal nicht genau 365,25 Tage lang, (so war es noch im Julianischen Kalender) sondern, laut Definition des gregorianischen Kalenders (welchen wir aktuell nutzen) 365,2425 Tage. der Julianische Kalender ist mit 365,25 Tagen etwa 11 Minuten länger als das astromomische Jahr :angel: alle 100 Jahre (mod 100) ist es kein Schaltjahr ... also 1800 und 1900 waren Keine, aber da es alle 400 Jahre (mod 400) dennoch ein Schaltjahr ist, war das Jahr 2000 zufällig eines. und da es so immernoch nicht ganz mit dem astronomischen Erdenjahr übereinstimmt, schmuggeln die Herren der Zeit jedes Jahr mehrere Schaltminuten und Schaltsekunden in unserer Zeit rein. (also laschen ganze Minuten und Sekunden einfach weg oder lassen mal eine doppelt ablaufen, bei den Atomuhren und keiner merkt es :twisted: ) |
Re: Prüfe Datum ob älter als ein Jahr
Gut soweit vor oder zurück wollte ich nicht gehen.
Wers braucht muss das dann eben auch noch abfangen z.B. mit mod 400. ... 1600 mod 400 = 0 <- Schaltjahr 1700 mod 400 = 100 1800 mod 400 = 200 1900 mod 400 = 300 2000 mod 400 = 0 <- Schaltjahr 2100 mod 400 = 100 ... Aber danke für den Hinweis! Gruß Stormy |
Re: Prüfe Datum ob älter als ein Jahr
und genau das mach die Funktion isLeakYear aus der SysUtils :angel:
Delphi-Quellcode:
function IsLeapYear(Year: Word): Boolean;
begin Result := (Year mod 4 = 0) and ((Year mod 100 <> 0) or (Year mod 400 = 0)); end; wobei diese Funktion natürlich auch nur innerhalb des Zeitraumes des "aktuellen" gregorianischen Kalenders korrekt wäre ... also z.B. würde hier behauptet, daß des Jahr 100 nach Christi kein Schaltjahr wäre, was zwar stimmt, aber auch nur, weil es damals noch keine Schlatjahre gab. :lol: |
Re: Prüfe Datum ob älter als ein Jahr
Dachte mir schon das die Funktion es ähnlich macht aber habe sie dennoch nie benutzt.
Ist ja auch wie man sieht schnell selber geschrieben. :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:11 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