[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Feature request: date: varity support

From: Markus Mayer
Subject: Feature request: date: varity support
Date: Wed, 23 Oct 2013 19:00:01 -0700

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:

   $ uname -sr
   Linux 3.2.0-54-generic

   $ ./src/date --version | head -1
   date (GNU coreutils) 8.21.131-cba81e-dirty

   # Now
   $ ./src/date
   Wed Oct 23 18:18:59 PDT 2013

   # Yesterday
   $ ./src/date -v-1d
   Tue Oct 22 18:19:04 PDT 2013

   # Last day in February 2013
   $ ./src/date -v1d -v3m -v13y -v-1d
   Thu Feb 28 18:19:09 PST 2013

   # Last day in February 2012
   $ ./src/date -v1d -v3m -v12y -v-1d
   Wed Feb 29 18:19:11 PST 2012

   # Last Friday of the current month
   $ ./src/date -v1d -v+1m -v-1d -v-fri
   Fri Oct 25 18:19:14 PDT 2013

Unlike FreeBSD's date command, "varity" arguments also work with date files (batch_convert()):

   $ cat dates.txt
   2004-02-29 16:21:42
   2008-05-27 12:01:12

   # 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.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]