1#!/usr/bin/perl -w 2 3# test bug 3766 4# http://rt.cpan.org/NoAuth/Bug.html?id=3766 5# returns undef when you pass it a DateTime object 6# whose timezone has been explicitly set. 7 8# test bug 3771 9# http://rt.cpan.org/NoAuth/Bug.html?id=3771 10# format_datetime method a DateTime object whose timestamp is set 11# explicitly as "00:00:00", the method will not print a timestamp or an offset. 12 13use strict; 14use Test::More tests => 5; 15 16use DateTime; 17use DateTime::Format::W3CDTF; 18 19my @dates = ( 20 { 21 date => { 22 year => 1977, month => 11, day => 11, hour => 1, minute => 12, 23 time_zone => 'America/Los_Angeles' 24 }, 25 w3cdtf => '1977-11-11T01:12:00-08:00', 26 msg => 'formatter works with explicit timezone', 27 }, { 28 date => { 29 year => 1977, month => 4, day => 7, 30 time_zone => 'America/Los_Angeles' 31 }, 32 w3cdtf => '1977-04-07T00:00:00-08:00', 33 msg => 'formatter works without timestamp', 34 }, { 35 date => { 36 year => 2003, month => 4, day => 7, hour => 2, 37 time_zone => 'America/Los_Angeles' 38 }, 39 w3cdtf => '2003-04-07T02:00:00-07:00', 40 msg => 'formatter properly recognizing daylights saving' 41 }, { 42 date => { 43 year => 2003, month => 12, day => 25, hour => 0, minute => 00, 44 second => 00, time_zone => 'America/Montreal' 45 }, 46 w3cdtf => '2003-12-25T00:00:00-05:00', 47 msg => 'formatter properly formats midnight' 48 }, { 49 date => { 50 year => 2009, month => 11, day => 25,, time_zone => 'Europe/London' 51 }, 52 w3cdtf => '2009-11-25T00:00:00+00:00', 53 msg => 'formatter handles tz offset of 0 properly' 54 } 55); 56my $f = DateTime::Format::W3CDTF->new(); 57 58foreach my $d (@dates) { 59 my $dt = DateTime->new( %{ $d->{date} } ); 60 is( $f->format_datetime($dt), $d->{w3cdtf}, $d->{msg} ); 61} 62