<URL: https://rt.cpan.org/Ticket/Display.html?id=79845 >

And here is the patch.

-Martin
diff -rup DateTime-0.76.orig/Build.PL DateTime-0.76/Build.PL
--- DateTime-0.76.orig/Build.PL	2012-07-01 23:55:52.000000000 +0200
+++ DateTime-0.76/Build.PL	2012-09-25 12:34:19.000000000 +0200
@@ -31,7 +31,6 @@ my %module_build_args = (
     "Carp" => 0,
     "DateTime::Locale" => "0.41",
     "DateTime::TimeZone" => "1.09",
-    "Math::Round" => 0,
     "Params::Validate" => "0.76",
     "Scalar::Util" => 0,
     "XSLoader" => 0,
diff -rup DateTime-0.76.orig/lib/DateTime.pm DateTime-0.76/lib/DateTime.pm
--- DateTime-0.76.orig/lib/DateTime.pm	2012-07-01 23:55:52.000000000 +0200
+++ DateTime-0.76/lib/DateTime.pm	2012-09-25 12:30:47.000000000 +0200
@@ -44,7 +44,7 @@ use DateTime::Duration;
 use DateTime::Helpers;
 use DateTime::Locale 0.41;
 use DateTime::TimeZone 1.09;
-use Math::Round qw( nearest round );
+use POSIX qw(floor);
 use Params::Validate 0.76
     qw( validate validate_pos UNDEF SCALAR BOOLEAN HASHREF OBJECT );
 
@@ -824,9 +824,9 @@ sub nanosecond {
     return $_[0]->{rd_nanosecs};
 }
 
-sub millisecond { round( $_[0]->{rd_nanosecs} / 1000000 ) }
+sub millisecond { floor( $_[0]->{rd_nanosecs} / 1000000 ) }
 
-sub microsecond { round( $_[0]->{rd_nanosecs} / 1000 ) }
+sub microsecond { floor( $_[0]->{rd_nanosecs} / 1000 ) }
 
 sub leap_seconds {
     my $self = shift;
@@ -1304,7 +1304,7 @@ sub _format_nanosecs {
 
     return sprintf(
         '%0' . $precision . 'u',
-        round( $self->{rd_nanosecs} / $divide_by )
+        floor( $self->{rd_nanosecs} / $divide_by )
     );
 }
 
@@ -2647,10 +2647,9 @@ Half a second is 500 milliseconds.
 =item * $dt->microsecond()
 
 Returns the fractional part of the second as microseconds (1E-6
-seconds). This value will be rounded to an integer.
+seconds).
 
-Half a second is 500_000 microseconds. This value will be rounded to
-an integer.
+Half a second is 500_000 microseconds.
 
 =item * $dt->nanosecond()
 
diff -rup DateTime-0.76.orig/t/03components.t DateTime-0.76/t/03components.t
--- DateTime-0.76.orig/t/03components.t	2012-07-01 23:55:52.000000000 +0200
+++ DateTime-0.76/t/03components.t	2012-09-25 09:36:49.000000000 +0200
@@ -260,14 +260,14 @@ is( $monday->day_of_week, 1, "Monday is
     $dt->set( nanosecond => 500_000_500 );
 
     is( $dt->nanosecond,  500_000_500, 'nanosecond is 500,000,500' );
-    is( $dt->microsecond, 500_001,     'microsecond is 500,001' );
+    is( $dt->microsecond, 500_000,     'microsecond is 500,001' );
     is( $dt->millisecond, 500,         'millisecond is 500' );
 
     $dt->set( nanosecond => 499_999_999 );
 
     is( $dt->nanosecond,  499_999_999, 'nanosecond is 499,999,999' );
-    is( $dt->microsecond, 500_000,     'microsecond is 500,000' );
-    is( $dt->millisecond, 500,         'millisecond is 500' );
+    is( $dt->microsecond, 499_999,     'microsecond is 499,999' );
+    is( $dt->millisecond, 499,         'millisecond is 499' );
 
     $dt->set( nanosecond => 450_000_001 );
 
@@ -279,7 +279,7 @@ is( $monday->day_of_week, 1, "Monday is
 
     is( $dt->nanosecond,  450_500_000, 'nanosecond is 450,500,000' );
     is( $dt->microsecond, 450_500,     'microsecond is 450,500' );
-    is( $dt->millisecond, 451,         'millisecond is 451' );
+    is( $dt->millisecond, 450,         'millisecond is 450' );
 }
 
 {
diff -rup DateTime-0.76.orig/t/13strftime.t DateTime-0.76/t/13strftime.t
--- DateTime-0.76.orig/t/13strftime.t	2012-07-01 23:55:52.000000000 +0200
+++ DateTime-0.76/t/13strftime.t	2012-09-25 09:41:22.000000000 +0200
@@ -209,7 +209,7 @@ year => 1999, month => 9, day => 7, hour
 %M => '02'
 %N => '123456789'
 %3N => '123'
-%6N => '123457'
+%6N => '123456'
 %10N => '1234567890'
 %p => 'PM'
 %r => '01:02:42 PM'
@@ -314,5 +314,5 @@ year => 2012, month => 1, day => 10
 year => 1999, month => 9, day => 7, hour => 13, minute => 2, second => 42, nanosecond => 00012345678
 %N => '012345678'
 %3N => '012'
-%6N => '012346'
+%6N => '012345'
 %10N => '0123456780'

Reply via email to