vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

In diesem Forum haben Sie die Möglichkeit Kommentare, Fragen und Verbesserungsvorschläge zu den im vb@rchiv gelisteten Tipps und Workshops zu posten.

Hinweis:
Ein neues Thema kann immer nur über die jeweilige Tipps & Tricks bzw. Workshop Seite eröffnet werden!

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fragen zu Tipps & Tricks und Workshops im vb@rchiv
Tipp 2249: Osterdatum nach Gauß berechnen (kompakte Form) 
Autor: Niclaus
 Tipp anzeigenDatum: 15.02.11 12:59

Interessant diese Oster-Function. Leider stimmt sie nicht für alle Jahre.
Ich habe sie getestet für die Jahre 1900 bis 2100 und zwar mit der "Original" Gauß´schen Osterformel. Sie stimmt nicht für die Jahre 1924 1954 1981 1992 2076 und für die Jahre ab 2100.
Die Gauß´sche Formel ist so komplex, dass man sie kaum als Formel oder Function definieren kann.
Grüsse Niclaus
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Osterdatum nach Gauß berechnen (kompakte Form) 
Autor: ModeratorDaveS (Moderator)
Datum: 15.02.11 14:53

Ja, sogar Gauss hatte Schwierigkeiten damit. Aber dann sind wir immerhin für die nächsten 65 Jahre noch gut.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Osterdatum nach Gauß berechnen (kompakte Form) 
Autor: mst547
Datum: 16.02.11 15:42

Ich erhalte auch für das Jahr 2049 ein falsches Datum sowie für alle Jahre vor 1900.
Das hier funktioniert für alle Jahre:
Private Function Ostersonntag(Jahr As Integer) As Date
Dim inta As Integer, intb As Integer, intc As Integer, intd As Integer
Dim inte As Integer, inth As Integer, intu As Integer, intv As Integer
Dim intw As Integer, intm As Integer, intn As Integer
Dim intTag As Integer, intMonat As Integer
 
inta = Jahr Mod 19
intb = Jahr Mod 4
intc = Jahr Mod 7
inth = Jahr \ 100
intu = inth \ 4
intv = (inth - 17) \ 25
intw = (inth - intv) \ 3
intm = (15 + inth - intu - intw) Mod 30
intd = (19 * inta + intm) Mod 30
intn = (4 + inth - intu) Mod 7
inte = (2 * intb + 4 * intc + 6 * intd + intn) Mod 7
 
intTag = 22 + intd + inte
If intTag > 31 Then
    intTag = intd + inte - 9
    intMonat = 4
 
    If intTag = 26 Then intTag = 19
    If intTag = 25 And intd = 28 And inte = 6 And inta > 10 Then intTag = 18
Else
    intMonat = 3
End If
 
Ostersonntag = DateSerial(Jahr, intMonat, intTag)
End Function
mfg mst547
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Osterdatum nach Gauß berechnen (kompakte Form) 
Autor: ModeratorDaveS (Moderator)
Datum: 17.02.11 11:19

Danke, das scheint (proberweise) richtig zu sein, wenn man nicht zu weit zurückblickt.

________
Alle Angaben ohne Gewähr. Keine Haftung für Vorschläge, Tipps oder sonstige Hilfe, falls es schiefgeht, nur Zeit verschwendet oder man sonst nicht zufrieden ist

Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um einen neuen Beitrag schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel