Während ich für die meisten Datetime-Operationen normalerweise in Unixtime konvertieren und Additionen, Subtraktionen usw. auf der Unixtime-Ganzzahl durchführen würde, möchten Sie sich vielleicht die Klasse Zend_Date des Zend-Frameworks ansehen.
Dies hat viele der von Ihnen beschriebenen Funktionen. Obwohl Zend als „Framework“ bezeichnet wird, funktioniert es außergewöhnlich gut als Klassenbibliothek, aus der Elemente ausgewählt und ausgewählt werden können. Wir beziehen es routinemäßig in Projekte ein und ziehen dann einfach Bits hinzu, wenn wir sie brauchen.