In a recent project, I made use of the "date -v ..." capability of FreBSD's date(1) command, which came in very handy to handle "yesterday's log files". I subsequently discovered "date -v" seems to be a FreeBSD-only feature and that GNU date (and therefore Linux) does not support it.
Considering how useful it seemed to me, I decided to try and port the functionality to GNU date -- changing the original FreeBSD code as little as possible.
This turned out to be far less of an issue than I anticipated. vary.c needed only a few small tweaks to build on Linux and within the coreutils framework. Hooking everything into date.c wasn't much harder. The result can be found here: https://github.com/mmayer/coreutils/tree/feature/vary
$ uname -sr
Linux 3.2.0-54-generic
$ ./src/date --version | head -1
date (GNU coreutils) 8.21.131-cba81e-dirty
# Regular batch processing
$ ./src/date -f dates.txt
Sun Feb 29 16:21:42 PST 2004
Tue May 27 12:01:12 PDT 2008
# Subtract a day
$ ./src/date -f dates.txt -v-1d
Sat Feb 28 16:21:42 PST 2004
Mon May 26 12:01:12 PDT 2008
# Add a year (Feb 29 becomes Mar 1)
$ ./src/date -f dates.txt -v+1y
Tue Mar 1 16:21:42 PST 2005
Wed May 27 12:01:12 PDT 2009
Please let me know if this functionality is something you would consider accepting into mainline. If so, I'll re-organize the patches to fit best practices for coreutils.