Докато за повечето операции за дата и време обикновено бих конвертирал в Unixtime и бих извършвал събиране на изваждане и т.н. на цяло число Unixtime, може да искате да разгледате Zend framework Zend_Date класа.
Това има голяма част от функционалността, която описвате. Въпреки че Zend се таксува като "рамка", той работи изключително добре като библиотека на класове, от която да избирате и избирате елементи. Ние рутинно го включваме в проекти и след това просто извличаме части, когато и когато имаме нужда от тях.