#!/usr/bin/perl -w

use strict;
use warnings;
use Date::Manip;

my @dateObject;
push @dateObject, ParseDateString('1/12/2010 10:44:49 AM');
push @dateObject, ParseDateString('1/12/2010 10:44:59 AM');

print "Delta is " . interval_to_sec(DateCalc(@dateObject)) . " seconds
+\n";

# parse interval string and yield seconds
sub interval_to_sec {
    my ($intv) = @_;
    my ($sec) = 0;
    my $sign = ($intv =~ /^-/) ? -1 : 1;
    my @f = reverse(split(/:/, $intv));
    # use just 5 least significant fields
    $sec  = $f[0];
    $sec += $f[1] * 60;
    $sec += $f[2] * 3600;
    $sec += $f[3] * 86400;
    $sec += $f[4] * 604800;   # 7 days
    $sec += $f[5] * 2629800;  # 30.4 days (365.25 / 12)
    $sec += $f[6] * 31557600; # 365.25 days (Julian year)
    return $sign * $sec;
}
