StayTheCourse has asked for the wisdom of the Perl Monks concerning the following question:
Unix and my pc give different answers when running this code. pc returns 39843 and unix returns 41338 and unix gives the correct answer.
#!/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; } #--------------------------------------------------------------------- +--------
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: days between dates
by Ratazong (Monsignor) on Mar 15, 2013 at 14:27 UTC | |
|
Re: days between dates
by SuicideJunkie (Vicar) on Mar 15, 2013 at 14:22 UTC | |
|
Re: days between dates
by choroba (Cardinal) on Mar 15, 2013 at 14:45 UTC | |
|
Re: days between dates
by vagabonding electron (Curate) on Mar 16, 2013 at 15:35 UTC | |
|
Re: days between dates
by pvaldes (Chaplain) on Mar 15, 2013 at 15:15 UTC |