AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Erstellen eines Datum-überprüfers

Ein Thema von Mo53 · begonnen am 16. Mai 2021 · letzter Beitrag vom 17. Mai 2021
Antwort Antwort
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#1

AW: Erstellen eines Datum-überprüfers

  Alt 17. Mai 2021, 21:54
Leute zum Thema der Osternüberprüfung verstehe ich die letzte Gleichung nicht, da beide Seiten der Gleichung ja nicht immer das gleiche ergeben.

Die Osterformel: So berechnen Sie das Datum

a = Jahr mod 4
b = Jahr mod 7
c = Jahr mod 19
d = (19c + 24) mod 30
e = (2a + 4b + 6d + 5) mod 7
f = (c + 11d + 22e) / 451
Der Ostersonntag wird daraus wie folgt errechnet: 22 + d + e - 7f
Ist dieses Ergebnis größer als 31, so liegt Ostern im April.
Dann muss folgende Formel für die Berechnung des Ostersonntag angewandt werden:
22 + d + e - 7f - 31 = d + e - 7f - 9.

Ich habe versucht das mal zum Verständnis in ein Quelltext zu übersetzen, da habe ich für beide Seiten der Gleichung jeweils eine Variable deklariert um zu schauen ob immer dasselbe rauskommt.
Die Formulierung ist vielleicht etwas unglücklich. Gemeint ist schlicht und einfach:
Delphi-Quellcode:
  OsterMonat := 3; // -> März
  OsterSonntag := 22 + d + e - 7f;
  if OsterSonntag > 31 then begin
    OsterMonat := OsterMonat + 1; // -> April
    // oder OsterMonat := 4;
    // aus 22 + d + e - 7f wird 22 + d + e - 7f - 31, da 22 - 31 = -9 wird daraus d + e - 7f - 9
    OsterSonntag := OsterSonntag - 31;
  end;
Ein Beispiel:

Sei 22 + d + e - 7f = 35, so fiele der Ostersonntag auf den 35. März. Den gibt es nicht.

Rechnen wird nun mit 22 + d + e - 7f - 31:
Wenn wir das etwas umstellen, wird daraus: d + e - 7f + 22 - 31
Nun rechnen wir noch aus, was 22 - 31 ergibt: -9
und tragen dies in die Formel ein.
Damit erhalten wir: d + e - 7f - 9.

Prinzipiell gilt also:
Ist das Ergebnis von 22 + d + e - 7f größer als 31,
so rechnen wir auf den Monat eins drauf -> März + 1 = April
und ziehen vom 35. März die 31 Tage des März ab.
Damit erhalten wir für den Ostersonntag den 4. April.

Im Programm brauchen wird die Formel d + e - 7f - 9 schlicht und einfach nicht. Sie ist bestenfalls irreführende Redundanz
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:29 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 by Thomas Breitkreuz