1997-07-16T19:20:30.45+01:00 is a valid W3CDTF format but D::F::W3CDTF thinks it's invalid. Here's a quick'n nasty patch.
=== lib/DateTime/Format/W3CDTF.pm ================================================================== --- lib/DateTime/Format/W3CDTF.pm (revision 25201) +++ lib/DateTime/Format/W3CDTF.pm (local) @@ -66,6 +66,9 @@ $p{time_zone} = 'floating'; } + # strip the decimal fraction digits + $date =~ s/(\d\d)\.\d+$/$1/; + my $format = $valid_formats{ length $date } or die "Invalid W3CDTF datetime string ($original)"; -- Tatsuhiko Miyagawa