Hi, It's a bit tricky to say which particular module needs to be changed to fix this bug, hence I am not using RT for reporting it. The good part is that all candidate modules appear to have the same author. :-)
The test case is as follows: #! /usr/bin/perl use strict; use warnings; use DateTime; use DateTime::Duration; use DateTime::Span; use Data::Dumper; my $bad_s = DateTime->new(year => 2009, month => 1, day => 12, hour => 1, minute => 0, second => 0); my $bad_e = DateTime->new(year => 2009, month => 1, day => 12, hour => 6, minute => 0, second => 0); my $bad = DateTime::Span->from_datetimes(start => $bad_s, end => $bad_e); my $good = $bad->complement; my $interest_s = DateTime->new(year => 2009, month => 1, day => 12, hour => 4, minute => 30, second => 0); my $interest_e = DateTime->new(year => 2009, month => 1, day => 12, hour => 5, minute => 0, second => 0); my $interest = DateTime::Span->from_datetimes(start => $interest_s, end => $interest_e); my $r = $interest->intersection($good); my $d = $r->duration; print Dumper $d; my $d0 = DateTime::Duration->new(seconds => 0); print Dumper $d0; I would certainly expect for the duration $d of the empty set $r to be the same duration as $d0, that is, zero seconds. Instead it behaves more like infinity. Is that something that you might be interesting in fixing? Thanks, \Anton. -- There is no beauty in entropy. -- Eliezer Yudkowsky