test-str2time.pl to HTML.

index -|- end

Generated: Mon Aug 29 19:35:03 2016 from test-str2time.pl 2016/07/07 2.8 KB. text copy

#!/usr/bin/perl -w
# NAME: test-str2time.pl
# AIM: Just some tests....
# 07/07/2016 - Initial cut
######################################

use strict;
use warnings;
use Date::Parse;

sub prt($) { print shift; }

sub get_time_stg($) {
    my $elap = shift;
    my $negative = 0;
    my $units = '';
    if ($elap < 0) {
        $negative = 1;
        $elap = -$elap;
    }
    if ( !($elap > 0.0) ) {
        return "0.0 s";
    }
    if ($elap < 1e-21) {
        #// yocto - 10^-24
        $elap *= 1e+21;
        $units = "ys";
    } elsif ($elap < 1e-18) {
        #// zepto - 10^-21
        $elap *= 1e+18;
        $units = "zs";
    } elsif ($elap < 1e-15) {
        #// atto - 10^-18
        $elap *= 1e+15;
        $units = "as";
    } elsif ($elap < 1e-12) {
        #// femto - 10^-15
        $elap *= 1e+12;
        $units = "fs";
    } elsif ($elap < 1e-9) {
        #// pico - 10^-12
        $elap *= 1e+9;
        $units = "ps";
    } elsif ($elap < 1e-6) {
        #// nanosecond - one thousand millionth (10?9) of a second
        $elap *= 1e+6;
        $units = "ns";
    } elsif ($elap < 1e-3) {
        #// microsecond - one millionth (10?6) of a second
        $elap *= 1e+3;
        $units = "us";
    } elsif ($elap < 1.0) {
        #// millisecond
        $elap *= 1000.0;
        $units = "ms";
    } elsif ($elap < 60.0) {
        $units = "s";
    } else {
        my $secs = int($elap + 0.5);
        my $mins = int($secs / 60);
        $secs = ($secs % 60);
        if ($mins >= 60) {
            my $hrs = int($mins / 60);
            $mins = $mins % 60;
            if ($hrs >= 24) {
                my $days = int($hrs / 24);
                $hrs = $hrs % 24;
                return sprintf("%d days %2d:%02d:%02d hh:mm:ss", $days, $hrs, $mins, $secs);
            } else {
                return sprintf("%2d:%02d:%02d hh:mm:ss", $hrs, $mins, $secs);
            }
        } else {
            return sprintf("%2d:%02d mm:ss", $mins, $secs);
        }
    }
    my $res = '';
    if ($negative) {
        $res = '-';
    }
    $res .= "$elap $units";
    return $res;
}

my $date = "2016-07-07 12:18:43";
my $date2 = "2016-07-07 12:18:48";
my $date3 = "2016-07-07 12:32:47"; # 825  - actual 844
my $date4 = "2016-07-07 12:52:08"; # 1960 - actual 2005 secs 33:25 mm:ss

my $epock = str2time($date);
my $ep2 = str2time($date2);
my $ep3 = str2time($date3);
my $ep4 = str2time($date4);

my $diff2 = $ep2 - $epock;
my $diff3 = $ep3 - $epock;
my $diff4 = $ep4 - $epock;

my $ts3 = get_time_stg($diff3);
my $ts4 = get_time_stg($diff4);

prt("str2time($date) = $epock\n");
prt("str2time($date2) = $ep2 - $diff2 secs\n");
prt("str2time($date3) = $ep3 - $diff3 secs $ts3\n");
prt("str2time($date4) = $ep4 - $diff4 secs $ts4\n");

# eof

index -|- top

checked by tidy  Valid HTML 4.01 Transitional