This post is partly in response for this post, discussing the Azure problem with leap year. But it is actually a bit more general than that.
In my code, here is how I define “one year from now”:
As it turned out, this tend to have a lot of implications on your business, most of them are actually pretty good ones.
For a start, you will never get hit with a leap year bug, but more importantly, you are never going to have to deal with an immediate cutoff. This is important because it gives you time. Mostly, it gives you time to screw up, but having the time to do so without having an egg all of your face is a really nice thing.
For example, all of our subscriptions are using a similar method of calculation, and this is why we can take the ordering system down for a few hours or even a day or two and no one will actually notice. We have a big grace period in which we can work things out.
Sure, a user gets 3 “extra” days for free out of this, but frankly, I don’t give a damn. It is more important that I get the buffer, and most users like it much better when you don’t slam the doors in their faces on the first chance.
One of the things that is important is style, and giving a grace period for those sort of things is crucial.