#!perl -w # t/002_basic.t - check module dates in various formats use Test::More tests => 17; use DateTime::Format::Strptime; use DateTime; use DateTime::TimeZone; my $object = DateTime::Format::Strptime->new( pattern => '%D', # time_zone => 'Australia/Melbourne', diagnostic => 0, ); my @tests = ( # Simple dates ['%Y-%m-%d', '1998-12-31'], ['%y-%m-%d', '98-12-31'], ['%Y years, %j days', '1998 years, 312 days'], ['%b %d, %Y', 'Jan 24, 2003'], ['%B %d, %Y', 'January 24, 2003'], # Simple times ['%H:%M:%S', '23:45:56'], ['%l:%M:%S %p', '11:34:56 PM'], # With Nanoseconds ['%H:%M:%S.%N', '23:45:56.123456789'], ['%H:%M:%S.%6N', '23:45:56.123456'], ['%H:%M:%S.%3N', '23:45:56.123'], # Complex dates ['%Y;%j = %Y-%m-%d', '2003;56 = 2003-02-25'], [q|%d %b '%y = %Y-%m-%d|, q|25 Feb '03 = 2003-02-25|], ); foreach (@tests) { my ($pattern, $data, $expect) = @$_; $expect ||= $data; $object->pattern($pattern); is($object->format_datetime( $object->parse_datetime( $data ) ), $expect, $pattern); } SKIP: { skip "You don't have the latest DateTime. Older version have a bug whereby 12am and 12pm are shown as 0am and 0pm. You should upgrade.", 1 unless $DateTime::VERSION >= 0.11; $object->pattern('%l:%M:%S %p'); is($object->format_datetime( $object->parse_datetime( '12:34:56 AM' ) ), '12:34:56 AM', '%l:%M:%S %p'); } # Timezones SKIP: { skip "You don't have the latest DateTime::TimeZone. Older versions don't display all time zone information. You should upgrade.", 3 unless $DateTime::TimeZone::VERSION >= 0.13; $object->pattern('%H:%M:%S %z'); is($object->format_datetime( $object->parse_datetime( '23:45:56 +1000' ) ), '23:45:56 +1000', '%H:%M:%S %z'); $object->pattern('%H:%M:%S %Z'); is($object->format_datetime( $object->parse_datetime( '23:45:56 AEST' ) ), '23:45:56 +1000', '%H:%M:%S %Z'); $object->pattern('%H:%M:%S %z %Z'); is($object->format_datetime( $object->parse_datetime( '23:45:56 +1000 AEST' ) ), '23:45:56 +1000 +1000', '%H:%M:%S %z %Z'); } $object->time_zone('Australia/Perth'); $object->pattern('%Y %H:%M:%S %Z'); is($object->format_datetime( $object->parse_datetime( '2003 23:45:56 MDT' ) ), '2003 13:45:56 WST', $object->pattern);