Hi Tim,

It looks like the normalization is hosed.

Cut 'n Paste-able example:
--
use DateTime::Duration;

my $dur = DateTime::Duration->new( hours => 2.67 );

print "hours: ",        $dur->in_units( 'hours' ), "\n";
print "minutes: ",      $dur->in_units( 'minutes' ), "\n";
print "seconds: ",      $dur->in_units( 'seconds' ), "\n";
print "nanoseconds: ",  $dur->in_units( 'nanoseconds' ), "\n";
--

-J

--

On Mon, 13 Dec 2004, Tim Jenness wrote:


perldl> $dur = DateTime::Duration->new( hours => 2.67);

perldl> print $dur->minutes
40.2

perldl> print $dur->seconds
0

How can that be sane? So you ask for minutes and you get fractional
minutes but you ask for seconds and get zero?

.... !!!!!

Hang on.


perldl> print $dur->in_units( 'minutes' ) 160.2 perldl> print $dur->in_units( 'seconds' ) 0 perldl>

so clearly in_units() is doing the right thing except that for 'seconds'
it's not working at all....

perldl> print $dur->in_units( 'hours' )
2

and neither is hours since that should say 2.67 to be consistent with
minutes returning 160.2.

I'm extremely confused by this seeming inconsistency.

--
Tim Jenness
JAC software
http://www.jach.hawaii.edu/~timj


Reply via email to