Seite 1 von 1

Schaltjahr-Macros

Verfasst: 11.10.2007 15:55
von hardfalcon
Ja, ich weiss, das ist für die meisten hier gefrorener Kaffee, aber es gibt halt trotzdem immer wieder mal Leute, die, wie ich, mathematisch minderbemittelt sind... :oops:

Code: Alles auswählen

Macro IsLeapYear(year)
((Not year%4) And (year%100) Or (Not year%400))
EndMacro


Debug "IsLeapYear(2007): "+Str(IsLeapYear(2007))
Debug "IsLeapYear(2008): "+Str(IsLeapYear(2008))
//EDIT: Vom julianischen auf den gregorianischen Kalender umgestellt (besser spät als nie :mrgreen: ), LastLeapYear() und NextLeapYear() reiche ich irgendwann mal nach, jetzt stehen Hausaufgaben auf dem Programm... :(

Verfasst: 11.10.2007 16:05
von AND51
Danke für die Snippets!

Aber ich hab mal ne Frage dazu: War es nicht so, dass boolsche Ausdrücke nicht in Termen unterstützt werden?

AFAIK wird

Code: Alles auswählen

a = 1

b = 3 + 2 + (a And 1)
Debug b
nicht unterstützt bzw. sollte nicht verwendet werden. Würde das dein IsLeapYear()-Makro nicht gefährlich machen?

Verfasst: 11.10.2007 16:10
von Kaeru Gaman
das not führt einen boolcast durch, ist also insofern das "korrekte" workaround.

aber tatsächlich sind die funktionen unvollständig, denn ein schaltjahr ist nicht einfach jedes vierte jahr...
jedes durch 100 teilbare ist keines, aber durch 400 teilbar doch wieder.
also, 1900 war keines, 2000 war eines, 2100 wird keines sein.

Verfasst: 11.10.2007 16:11
von X0r
>jedes durch 100 teilbare ist keines, aber durch 400 teilbar doch wieder.

Welcher Physiker hat das erfunden? :mrgreen:

Verfasst: 11.10.2007 16:13
von NicTheQuick
Hab neulich erst sowas gemacht, aber etwas erweitert. Findet ihr hier: Date-Funktionen

Verfasst: 11.10.2007 16:18
von hardfalcon
Ich hab das eben auch mit Schrecken in der Wikipedia gelesen, dass meine Macros nur dem Julianischen Kalender entsprechend korrekt arbeiten, laut dem gregorianischen Kalender jedoch falsch sind...
Ich verweise also an dieser Stelle einfach mal stinkefaul, wie ich nunmal bin, auf den Thread, den NicTheQuick verlinkt hat... :mrgreen:

Verfasst: 11.10.2007 16:21
von Kaeru Gaman
X0r hat geschrieben:>jedes durch 100 teilbare ist keines, aber durch 400 teilbar doch wieder.

Welcher Physiker hat das erfunden? :mrgreen:
erfunden hat es der, der die Erde erschaffen hat... Bild

die umsetzung ist lediglich eine korrekte interpretation der nachkommastellen bei den realen gegebenheiten...

vermutlich gibt es da noch mehr regeln dafür, wie jedes 2000ste doch wieder nicht und so...