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

# ctime - convert a Unix time integer into a date string
# Steve Kinzler, steve@kinzler.com, Jan 00/Jul 06/May 09
# https://kinzler.com/me/home.html#unix

$usage = "usage: $0 [ -g | -z ] [ -i | -I | -d ]
       [ seconds_since_Jan_1_1970 ... ]
	-g	report date in GMT regardless of \$TZ
	-z	report date in EST5EDT if \$TZ is undefined
	-i	output date in 'YYYY-MM-DD HH:MM:SS' format
	-I	output date in 'YYYY-MM-DD HH:MM:SS TZO' format
	-d	output date in 'YYYYMMDD' format\n";
die $usage if $h || grep(/\D/, @ARGV);

$ENV{'TZ'} = 'GMT'     if $g;
$ENV{'TZ'} = 'EST5EDT' if $z && ! $ENV{'TZ'};

use Time::CTime;

foreach (@ARGV) {
	print $i ? &stdtime($_)  :
	      $I ? &stdtimet($_) :
	      $d ? &yyyymmdd($_) : ctime($_);
}

sub stdtime  { strftime("%Y-%m-%d %H:%M:%S\n",	  localtime($_[0])); }
sub stdtimet { strftime("%Y-%m-%d %H:%M:%S %Z\n", localtime($_[0])); }
sub yyyymmdd { strftime("%Y%m%d\n",		  localtime($_[0])); }
