in reply to Midnight wraparound.

I'm thinking Date::Calc's Delta_YMDHMS or Add_Delta_YMDHMS methods might be of use here.