Podczas gdy dla większości operacji datetime zwykle konwertowałbym do Unixtime i wykonywał dodawanie, odejmowanie itp. na liczbie całkowitej Unixtime, możesz chcieć spojrzeć na klasę Zend_Date frameworka Zend.
Ma wiele funkcji, które opisujesz. Chociaż Zend jest określany jako "szkielet", działa wyjątkowo dobrze jako biblioteka klas do wybierania i wybierania elementów. Rutynowo włączamy go do projektów, a następnie po prostu pobieramy bity, kiedy ich potrzebujemy.