Hi everybody! You may remember me from a while back wanting to make a module pertaining to UK bank holidays. I got a bit stuck on some other work and have finally had some time to come back to it. I'm pleased to say that it's going very well but I've hit a small snag, which I could fix with a hack but part of doing all this is wanting to contribute back to the community so I'd rather try and work out why something isn't working...
So here's the problem, I've got two DateTime objects and I want to work out how many days there are between them. Simple I thought: my $dt1 = DateTime->new( year => 2008, month => 10, day => 2, ); my $dt2 = DateTime->new( year => 2008, month => 10, day => 5, ); my $span = DateTime::Span->from_datetimes( start => $dt1, end => $dt2 ); my $d = $span->duration; print $d->days; That didn't work so I went back to the documentation and spotted that "The last example demonstrates that there will not be any conversion between units which don't have a fixed conversion rate." Which if someone could clarify would be great because the $span->duration seems to return a duration object in seconds, there's definitely a fixed number of seconds in a day (actually unless we're talking about that tiny fraction that ends up counting towards a quarter of a day per year?). Anyways, I thought fair enough, I read on and got to: "If you need more flexibility in presenting information about durations, please take a look a DateTime::Format::Duration." Great, nearly there. Except this doesn't seem to be working : ( Can somebody just check I'm not mental: FROM DOCS: http://search.cpan.org/~rickm/DateTime-Format-Duration-1.03a/lib/DateTim e/Format/Duration.pm $d = DateTime::Format::Duration->new( pattern => '%Y years, %m months, %e days, '. '%H hours, %M minutes, %S seconds' ); print $d->format_duration( DateTime::Duration->new( years => 3, months => 5, days => 1, hours => 6, minutes => 15, seconds => 45, nanoseconds => 12000 ) ); # 3 years, 5 months, 1 days, 6 hours, 15 minutes, 45 seconds END FROM DOCS This doesn't actually return what's stated above (#) but actually returns 0 years, 41 months, 1 days, 00 hours, 375 minutes, 45 seconds And if I try and make the pattern => '%e' to just get the number of days, this returns 0! Have I missed something?! I'm thinking there's probably a _much_ easier way of getting what I want and it's just passed by my small boy brain. Appreciative of any help, Kristian