use strict;
use Test::More tests => 5;
use DateTime;
use DateTime::Format::W3CDTF;
my @dates = (
{
date => {
year => 1977, month => 11, day => 11, hour => 1, minute => 12,
time_zone => 'America/Los_Angeles'
},
w3cdtf => '1977-11-11T01:12:00-08:00',
msg => 'formatter works with explicit timezone',
}, {
date => {
year => 1977, month => 4, day => 7,
time_zone => 'America/Los_Angeles'
},
w3cdtf => '1977-04-07T00:00:00-08:00',
msg => 'formatter works without timestamp',
}, {
date => {
year => 2003, month => 4, day => 7, hour => 2,
time_zone => 'America/Los_Angeles'
},
w3cdtf => '2003-04-07T02:00:00-07:00',
msg => 'formatter properly recognizing daylights saving'
}, {
date => {
year => 2003, month => 12, day => 25, hour => 0, minute => 00,
second => 00, time_zone => 'America/Montreal'
},
w3cdtf => '2003-12-25T00:00:00-05:00',
msg => 'formatter properly formats midnight'
}, {
date => {
year => 2009, month => 11, day => 25,, time_zone => 'Europe/London'
},
w3cdtf => '2009-11-25T00:00:00+00:00',
msg => 'formatter handles tz offset of 0 properly'
}
);
my $f = DateTime::Format::W3CDTF->new();
foreach my $d (@dates) {
my $dt = DateTime->new( %{ $d->{date} } );
is( $f->format_datetime($dt), $d->{w3cdtf}, $d->{msg} );
}