#!/bin/perl58 use Time::Local; $date='3/5/2013'; $dbt=&daysbetween('1/1/1904',$date); $dbt += 1462;# for 1900-1903 plus 2 days warn "$dbt $date and 1/1/1900\n"; #----------------------------------------------------------------------------- sub daysbetween { my($dte,$dte1)= @_; my ( $mo, $dy, $yr) = split /\//, $dte; my ( $mo1, $dy1, $yr1) = split /\//, $dte1; $mo = $mo - 1; $mo1 = $mo1 - 1; if($dy > 31 || $dy < 1){ warn "$transid $dte $dte1\n"; return 1000000; } if($dy1 > 31 || $dy1 < 1){ warn "$transid $dte $dte1\n"; return 1000000; } if($mo > 11 || $mo < 0){ warn "$transid $dte $dte1\n"; return 1000000; } if($mo1 > 11 || $mo1 < 0){ warn "$transid $dte $dte1\n"; return 1000000; } if($yr > 2037){ warn "$transid $dte $dte1\n"; return 1000000; } if($yr1 > 2037){ warn "$transid $dte $dte1\n"; return 1000000; } my $ltime = timelocal ( 0, 0, 1, $dy, $mo, $yr ); my $ltime1 = timelocal ( 0, 0, 1, $dy1, $mo1, $yr1 ); my $days=sprintf("%.0f",($ltime1-$ltime)/86400); return $days; } #-----------------------------------------------------------------------------