#! /bin/bash 
# Last edited on 2012-05-23 18:22:41 by stolfi

# Tests ~/lib/parse-unix-date.gawk

cat <<EOF \
  | gawk \
      -f ~/lib/parse-unix-date.gawk \
      --source \
        ' /^[ ]*([\#]|$)/ { print; next }
          /[0-9]/ {
            if (match($0, /[\#]/))
              { d = substr($0,1,RSTART-1); 
                cm = substr($0, RSTART);
              }
            else
              { d=$0; cm = ""; }
            split("", dfa);
            split("", dfb);
            tzdef="-0300";
            pud_parse_date(d,tzdef,dfa);
            dfax = pud_format_date(dfa, "/", "-", ":");
            ts = pud_timestamp_from_date(dfa);
            pud_date_from_timestamp(ts,"+0000",dfb);
            dfbx = pud_format_date(dfb, "/", "-", ":"); 
            printf "%-26s %15s %16.6f %-26s %s%s\n", dfax,ts,ts/(24*60*60),dfbx,d,cm;
            next;
          } 
          // { print; next }
        '
# Beginning of years:
1 Jan 1901 00:00:00 +0000
1 Jan 1902 00:00:00 +0000
1 Jan 1903 00:00:00 +0000
1 Jan 1904 00:00:00 +0000
1 Jan 1969 00:00:00 +0000
1 Jan 1970 00:00:00 +0000
1 Jan 1971 00:00:00 +0000
1 Jan 1972 00:00:00 +0000
1 Jan 1973 00:00:00 +0000
1 Jan 1974 00:00:00 +0000
1 Jan 1975 00:00:00 +0000
1 Jan 1976 00:00:00 +0000
1 Jan 1977 00:00:00 +0000
1 Jan 1978 00:00:00 +0000
1 Jan 2099 00:00:00 +0000

# End of years:
31 Dec 1901 23:59:59 +0000
31 Dec 1902 23:59:59 +0000
31 Dec 1903 23:59:59 +0000
31 Dec 1904 23:59:59 +0000
31 Dec 1969 23:59:59 +0000
31 Dec 1970 23:59:59 +0000
31 Dec 1971 23:59:59 +0000
31 Dec 1972 23:59:59 +0000
31 Dec 1973 23:59:59 +0000
31 Dec 1974 23:59:59 +0000
31 Dec 1975 23:59:59 +0000
31 Dec 1976 23:59:59 +0000
31 Dec 1977 23:59:59 +0000
31 Dec 1978 23:59:59 +0000
31 Dec 2099 23:59:59 +0000

# Begin/end of month (normal year):
31 December  1981 23:59:59 +0000
01 January   1982 00:00:00 +0000
31 January   1982 23:59:59 +0000
01 February  1982 00:00:00 +0000
28 February  1982 23:59:59 +0000
01 March     1982 00:00:00 +0000
31 March     1982 23:59:59 +0000
01 April     1982 00:00:00 +0000
30 April     1982 23:59:59 +0000
01 May       1982 00:00:00 +0000
31 May       1982 23:59:59 +0000
01 June      1982 00:00:00 +0000
30 June      1982 23:59:59 +0000
01 July      1982 00:00:00 +0000
31 July      1982 23:59:59 +0000
01 August    1982 00:00:00 +0000
31 August    1982 23:59:59 +0000
01 September 1982 00:00:00 +0000
30 September 1982 23:59:59 +0000
01 October   1982 00:00:00 +0000
31 October   1982 23:59:59 +0000
01 November  1982 00:00:00 +0000
30 November  1982 23:59:59 +0000
01 December  1982 00:00:00 +0000
31 December  1982 23:59:59 +0000
01 January   1983 00:00:00 +0000

# Begin/end of month (leap year):
31 December  1979 23:59:59 +0000
01 January   1980 00:00:00 +0000
31 January   1980 23:59:59 +0000
01 February  1980 00:00:00 +0000
29 February  1980 23:59:59 +0000
01 March     1980 00:00:00 +0000
31 March     1980 23:59:59 +0000
01 April     1980 00:00:00 +0000
30 April     1980 23:59:59 +0000
01 May       1980 00:00:00 +0000
31 May       1980 23:59:59 +0000
01 June      1980 00:00:00 +0000
30 June      1980 23:59:59 +0000
01 July      1980 00:00:00 +0000
31 July      1980 23:59:59 +0000
01 August    1980 00:00:00 +0000
31 August    1980 23:59:59 +0000
01 September 1980 00:00:00 +0000
30 September 1980 23:59:59 +0000
01 October   1980 00:00:00 +0000
31 October   1980 23:59:59 +0000
01 November  1980 00:00:00 +0000
30 November  1980 23:59:59 +0000
01 December  1980 00:00:00 +0000
31 December  1980 23:59:59 +0000
01 January   1981 00:00:00 +0000

# Timezone info:

Tue, 23 Sep 1997 11:09:28 -0700
Sun, 23 Feb 2003 09:41:28 +1000
Sun, 23 Feb 2003 13:25:01 +1000
Tue, 23 Sep 1997 11:09:28 -0700
Mon, 24 Feb 2003 16:31:07 -0800
Thu, 26 Sep 2002 23:00:33 -0300 (EST)
Sat Feb 22 23:32:30 2003
23 Sep 1997 11:09:28 -0700
23 Sep 1997 00:09:28 +0030
23 Sep 1997 23:49:28 -0030
28 Feb 1980 23:49:28 -0030
01 Mar 1980 00:09:28 +0045
EOF
