WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 03.06.2004, 01:52   #1
ff
Veteran
 
Registriert seit: 13.11.1999
Beiträge: 466


Frage Beten notwendig?

Also folgender php-Code:

<?php
for ($jahr=1980; $jahr<2011; $jahr++) {
print "Aschermittwoch $jahr = " . strftime("%A, %d.%B %Y",easter_date($jahr) - 46*86400) . "
";
}
?>

bringt folgendes Ergebnis:

Aschermittwoch 1980 = Wednesday, 20.February 1980
Aschermittwoch 1981 = Tuesday, 03.March 1981
Aschermittwoch 1982 = Tuesday, 23.February 1982
Aschermittwoch 1983 = Tuesday, 15.February 1983
Aschermittwoch 1984 = Tuesday, 06.March 1984
Aschermittwoch 1985 = Tuesday, 19.February 1985
Aschermittwoch 1986 = Wednesday, 12.February 1986
Aschermittwoch 1987 = Tuesday, 03.March 1987
Aschermittwoch 1988 = Tuesday, 16.February 1988
Aschermittwoch 1989 = Wednesday, 08.February 1989
Aschermittwoch 1990 = Tuesday, 27.February 1990
Aschermittwoch 1991 = Wednesday, 13.February 1991
Aschermittwoch 1992 = Tuesday, 03.March 1992
Aschermittwoch 1993 = Tuesday, 23.February 1993
Aschermittwoch 1994 = Tuesday, 15.February 1994
Aschermittwoch 1995 = Tuesday, 28.February 1995
Aschermittwoch 1996 = Tuesday, 20.February 1996
Aschermittwoch 1997 = Wednesday, 12.February 1997
Aschermittwoch 1998 = Tuesday, 24.February 1998
Aschermittwoch 1999 = Tuesday, 16.February 1999
Aschermittwoch 2000 = Tuesday, 07.March 2000
Aschermittwoch 2001 = Tuesday, 27.February 2001
Aschermittwoch 2002 = Wednesday, 13.February 2002
Aschermittwoch 2003 = Tuesday, 04.March 2003
Aschermittwoch 2004 = Tuesday, 24.February 2004
Aschermittwoch 2005 = Wednesday, 09.February 2005
Aschermittwoch 2006 = Tuesday, 28.February 2006
Aschermittwoch 2007 = Tuesday, 20.February 2007
Aschermittwoch 2008 = Wednesday, 06.February 2008
Aschermittwoch 2009 = Tuesday, 24.February 2009
Aschermittwoch 2010 = Tuesday, 16.February 2010

Muss man hier beten, damit der Aschermittwoch wirklich auf einen Mittwoch faellt? Mit allen anderen von Ostern abhaengigen Feiertagen funktioniert diese "Formel" wunderbar. Vielleicht weiss jemand Rat, bevor ich dem Papst ein Mail senden muss . . .

Danke
ff
ff ist offline   Mit Zitat antworten
Alt 03.06.2004, 01:58   #2
charti
Jr. Member
 
Registriert seit: 14.02.2004
Alter: 56
Beiträge: 41


Standard

kannst ma die formel erklären wie kommst auf 46 und 86tausend

ist der aschermittwoch net beweglich ?
sag an
charti ist offline   Mit Zitat antworten
Alt 03.06.2004, 02:16   #3
ff
Veteran
 
Registriert seit: 13.11.1999
Beiträge: 466


Standard

"Heilige" Webseiten behaupten, dass der Aschermittwoch 46 Tage vor dem Ostersonntag ist. Ich behaupte, dass ein Tag 86400 Sekunden hat.

Wenn er sich von Mittwoch auf Dienstag bewegt, ist er mir ZU beweglich ;-)
ff ist offline   Mit Zitat antworten
Alt 03.06.2004, 02:31   #4
ff
Veteran
 
Registriert seit: 13.11.1999
Beiträge: 466


Standard

Also mit Versuch und Irrtum habe ich jetzt herausgefunden, dass immer ein Mittwoch berechnet wird, wenn ich dem Tag statt 86400 nur 86321 Sekunden verpasse. Nicht fragt mich jetzt warum? Das wollt ich von EUCH wissen
ff ist offline   Mit Zitat antworten
Alt 03.06.2004, 04:01   #5
Herbertus
Master
 
Registriert seit: 23.05.2003
Beiträge: 780


Standard

Hi ff!

Hab' ja nix mit php am Hut, aber das Problem sehe ich ein. Ich habe den Verdacht, Du bist dem allseits beliebten Dezimalbruch-Binärdarstellungsfehler auf der Spur. Du rechnest mit sehr großen Zahlen, da kann die Rechnung "Ostersonntag(Sekunde 0) - 46 Tage a 86400" schon mal zu Ungenauigkeiten führen.
Wie gesagt, nur ein Verdacht, habe aber in Excel bei sehr großen Zahlen auch schon Erstaunliches rausgekriegt.

MfG
Herbertus

edit:
Wie wärs mit Buddhismus, da geht es nur ums Nirwana, dort gibt es keine Zeit?
Herbertus ist offline   Mit Zitat antworten
Alt 03.06.2004, 09:28   #6
Shadow
Master
 
Registriert seit: 19.04.2000
Beiträge: 541


Standard

Wahrscheinlich liegt das Problem daran, dass du nicht in Tagen sondern in Sekunden rechnest.
Du versuchst praktisch den Aschermittwoch um 00:00:00 Uhr zu berechnen. Wenn du nur um eine Sekunde falsch liegst (z.B. durch Rundungsfehler) dann erwischst du den Dienstag davor um 23:59:59 Uhr.

Rechne entweder nur in Tagen oder sieh zu dass du den Aschermittwoch zur Mittagszeit nimmst, da kann dir auch keine Abweichung was anhaben (im Prinzip hast du das durch die Anpassung der Sekunden gemacht, du bist weiter in den Tag gegangen mit der Berechnung).
Shadow ist offline   Mit Zitat antworten
Alt 03.06.2004, 10:51   #7
käptn
Inventar
 
Registriert seit: 04.11.2001
Alter: 45
Beiträge: 2.150


Standard

k.A. obs stimmt, aber:

PHP-Code:
for ($jahr 1980$jahr 2011$jahr++) {
    
$ostern easter_date($jahr);
    
$days date('md'$ostern) < 402 46 45;
    
$O  strftime("%A, %d. %b %Y"$ostern);
    
$AM strftime("%A, %d. %b %Y"$ostern - ($days 86400));
    
printf("O = %s || AM %d = %s\n"$O$jahr$AM);

~
____________________________________
LOL - Mein erstes Post im Programmier Forum

MACINTOSH - Most Applications Crash, If Not The Operating System Hangs
käptn ist offline   Mit Zitat antworten
Alt 03.06.2004, 19:06   #8
ff
Veteran
 
Registriert seit: 13.11.1999
Beiträge: 466


Standard

@alle - danke fuer eure Beitraege.
@käptn - danke fuer deinen Loesungsansatz! Lediglich 1980 liefert hier einen Donnerstag als Aschermittwoch. Sonst wuerde es stimmen.

Ich glaube in der Zwischenzeit die Ursache gefunden zu haben. Schuld ist die Sommerzeitumstellung, die anscheinend in strftime beruecksichtigt wird. Wenn zu Ostern bereits Sommerzeit ist, dann fehlt in der Rechnung die eine "aufgefressene" Stunde und die Formel rechnet nach Dienstag 23h zurueck, statt nach Aschermittwoch 00h.

Es solte nicht so schwierig sein, nun eine saubere Loesung zu finden. Mal sehen . . .

lg
ff
ff ist offline   Mit Zitat antworten
Alt 03.06.2004, 20:22   #9
ff
Veteran
 
Registriert seit: 13.11.1999
Beiträge: 466


Standard

So, wenn auch 46*86321 die verlorenen Stunde einspart und das richtige Ergebnis bringt, gehoert das meiner Meinung nach besser so angeschrieben: Osterdatum - 46*86400 + 43200.

So frage ich das Datum und den Wochennamen zu Mittag bzw 11h ab.

PHP-Code:
for ($jahr=1971$jahr<2038$jahr++) {
    print 
"Aschermittwoch $jahr = " strftime("%A, %d.%B %Y",easter_date($jahr) - 46*86400 43200) . "
"
;

Thats it
lg
ff
ff ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:58 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag