Bash – Timestamp comparison on AIX without date -d

aixbashdatetimestampunix

I have a bash script on AIX 7 that runs a database query and the output I get is a timestamp in the following format: 201607130319.

Now I would like to compare the timestamp with current time (date +%Y%m%d%H%M201607201802) and check the difference in minutes. I basically need to know if the difference is more than 10 minutes.

I know I can do this on Linux using date -d but it is not available on AIX. I am not allowed to install anything on the server either so what are my options here?

Best Answer

Perl is probably installed, so you can do

timestamp=$( some process )   # timestamp=201607130319
perl -se '
    use Time::Local;
    if ($ts =~ /^(\d{4})(\d\d)(\d\d)(\d\d)(\d\d)$/) {
        $time = timelocal(0,$5,$4,$3,$2-1,$1-1900);
        $now  = time;
        if (abs( $time - $now ) > 600) {
            print "more than 10 minutes\n";
        }
    }
' -- -ts="$timestamp"
Related Topic