=================================================================== RCS file: /cvs/pta/pta.pl,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- pta/pta.pl 2020/11/10 19:08:06 1.6 +++ pta/pta.pl 2020/11/18 12:55:44 1.7 @@ -18,6 +18,7 @@ use warnings; use strict; use Getopt::Std qw(getopts); +use Time::Local qw(timegm); our ($opt_a, $opt_b, $opt_c, $opt_L, $opt_n, $opt_p, $opt_s); @@ -257,7 +258,7 @@ while (<$in>) { month => $month, day => $day, date => "$year-$month-$day", - days => ($month - 1) * 30 + ($day - 1), + days => (timegm 0,0,0, $day, $month-1, $year) / 86400, price => $newpc * $amount, }; $prices{$cc} = $new unless $prices{$cc} && $oldpc == $newpc; @@ -283,8 +284,7 @@ while (<$in>) { if ($old) { # Record a gain or loss in this period. $newprofit->{olddate} = $old->{date}; - $newprofit->{days} = $new->{days} - $old->{days} + - ($new->{year} - $old->{year}) * 360; + $newprofit->{days} = $new->{days} - $old->{days}; $newprofit->{text} .= sprintf " %s %s (%dd)", (translate 'since'), $old->{date}, $newprofit->{days}; @@ -524,7 +524,7 @@ for my $cc (sort keys %cclist) { 100.0 * $entry->{rel}, $entry->{old}; if ($entry->{days}) { printf "%5.1f%% p.a.", - 36000.0 * $entry->{rel} / $entry->{days}; + 36524.5 * $entry->{rel} / $entry->{days}; } else { printf "%11s", ''; }