Reimplementation of native Date object that doesn't suck