#!/usr/bin/perl -s
BEGIN { unshift @INC, "$ENV{'HOME'}/perl",
		      "$ENV{'HOME'}/libp/perl", "$ENV{'HOME'}/lib/perl" }

# getdate - convert a date string into a Unix time integer, or test a daterange
# Steve Kinzler, steve@kinzler.com, Jan 00/Aug 06/Jun 08
# https://kinzler.com/me/home.html#unix

$usage = <<EOF;
usage: $0 [ date | unix_time ]
       $0 -t start_date [ end_date [ test_date ] ]
The default end_date is infinity.  The default test_date is now.
EOF
die $usage if $h || $t && ! @ARGV;

use Time::ParseDate;

for (@ARGV) { s/_/ /g }

print(@ARGV ? &parsedatetime(join(' ', @ARGV)) : time, "\n"), exit unless $t;

$start = &parsedatetime($ARGV[0]);
$end   = ($ARGV[1] eq '') ? ''   : &parsedatetime($ARGV[1]);
$test  = ($ARGV[2] eq '') ? time : &parsedatetime($ARGV[2]);

exit 0 if $test >= $start && ($end eq '' || $test <= $end);
exit 1;

sub parsedatetime {
	($_[0] =~ /^\d+$/) ? $_[0] : parsedate($_[0]);
}

# newer GNU date(1)s:	date +%s -d "$1"
