hi,
Du schreibst deine Klasse, weil du Speicher sparen willst(?)
Nein, ich schreibe eine Klasse die besser in mein Konzept passt, als Basisklasse 'Date' wo nur mit Tagen gerechnet wird, weil die kleinste Einheit für Datumsberechnungen der Tag ist und nicht die Sekunde und weil mein Konzept im Weiteren vorsieht, für Sekundenschärfe eine Subklasse zu bilden, wobei andere Subklassen zur jeweiligen Aufgabenstellung passen, wie z.B. Date_Maya, Date_Format, Date_HMS usw.
Meine PHP Basisklasse hat z.Z. 320 Zeilen Code und deckt die Scaliger-Epoche 1.1.4713 BC bis 22.1.3268 ab mit fortlaufend numerierten Tagen. Implementiert die Berechnung des numerischen Wochentages von 1-7, die Kalenderwoche nach DIN1355 (ISO/R 2015-1971) (deutsch), stellt fest, ob das Jahr ein Schaltjahr ist (auch die negativen Jahre) und bestimmt die Epoche (Julian/Gregorian) automatisch anhand des dem Konstruktor mitgegebenen Datums oder Julianischen Tages.
Von Perl nach PHP umsetzen muss ich noch die Möglichkeit der Vorgabe ob J oder G, das ist in Hinblick auf die Maya-Anbindung zwingend erforderlich, weil in den Fachbüchern der Hieroglyphenforscher sowohl der J.K. (Old Style) als auch der G.K. (new Style) Verwendung findet und das außerhalb von Europa und das heißt, dass die Gregorianische Reform eben nicht überall zur gleichen Zeit umgesetzt wurde.
Meine Basisklasse deckt allen möglichen, dem Konstruktor übergebenen Mist ab mit einer gezielt geworfenen Exception, Exception deshalb, weil es nicht mehr möglich ist, die Vielfalt der möglichen Eingabefehler über herkömmliche Kontrollstrukturen abzuwicklen. In das Basismodul kommt noch rein die Kalkulation der DST, auch hierzu wird nur mit ganzen Tagen gerechnet (sind nur ein paar Zeilen Code, mache ich morgen, danke der Nachfrage).
Ob die PHP-Lib fehlerhaft ist oder nicht, kann ich insgesamt nicht beurteilen, ich habe auch gar keine Zeit, da gezielt nach Fehlern zu suchen und offen gestanden auch keine Lust. Datumsberechnungen sind ein sehr komplexes Thema, ich habe Respekt vor Jedem Programmierer, der solche Herausforderungen annimmt.
Der Einbau der KW-Berechnung ist heute fertig geworden und funktioniert einwandfrei auf einem 32-Bit Rechner. Allerdings musste ich den Zeitraum einschränken, weil es die DIN1355, verglichen mit der Scaliger-Epoche, noch nicht allzulange gibt.
Schönes Wochenende,
danke für die Aufmerksamkeit!