Quando di devono fare operazioni matematiche (+ e -) che coinvolgono date/ore, si lavora in "UnixTime" ovvero con un numero intero con cui è molto facile operare.
Ovviamente ti servono le routines per convertire da data/ora in "Unix Time" (detto anche epoch) e viceversa ...
Se fai un po' di ricerche, se ne è parlato qualche altra volta qui sul forum ...
Guglielmo