日付の引き算


gawk では mktime() 関数が追加されていますので、簡単に計算することもできます。実際には、エポックタイムからの経過秒数に直してから引き算を行います。

#! /usr/bin/gawk -f
# usage: gawk -f dday.awk YYYY/MM/DD
#   input:  formated day style (YYYY/MM/DD)
#   output: how long days before today
BEGIN {
    split(ARGV[1], a_day, /\//);
    year  = a_day[1];
    month = a_day[2];
    day   = a_day[3];
    now   = systime();
    delta_day = int((now - mktime(year " " month " " day " 00 00 00"))\
                    / (24 * 60 * 60)) + 1;
    print delta_day;
}
$ gawk -f dday.awk 2007/11/1
26
$ gawk -f dday.awk 2007/11/26
1