Blame t/02_examples.t

Packit 106d3f
#!/usr/bin/perl
Packit 106d3f
Packit 106d3f
# Copyright (C) 2003-2005  Joshua Hoblitt
Packit 106d3f
Packit 106d3f
use strict;
Packit 106d3f
use warnings;
Packit 106d3f
Packit 106d3f
use lib qw( ./lib );
Packit 106d3f
Packit 106d3f
use Test::More tests => 174;
Packit 106d3f
Packit 106d3f
use DateTime::Format::ISO8601;
Packit 106d3f
Packit 106d3f
# parse_datetime
Packit 106d3f
my $base_year = 2000;
Packit 106d3f
my $base_month = "01";
Packit 106d3f
my $iso8601 = DateTime::Format::ISO8601->new(
Packit 106d3f
    base_datetime => DateTime->new( year => $base_year, month => $base_month ),
Packit 106d3f
);
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYMMDD 19850412
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '19850412' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-MM-DD 1985-04-12
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-04-12' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-MM 1985-04
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-04' );
Packit 106d3f
    is( $dt->ymd, '1985-04-01' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY 1985
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985' );
Packit 106d3f
    is( $dt->ymd, '1985-01-01' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YY 19 (century)
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '19' );
Packit 106d3f
    is( $dt->ymd, '1901-01-01' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYMMDD 850412
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '850412' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YY-MM-DD 85-04-12
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '85-04-12' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-YYMM -8504
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-8504' );
Packit 106d3f
    is( $dt->ymd, '1985-04-01' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-YY-MM -85-04
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-85-04' );
Packit 106d3f
    is( $dt->ymd, '1985-04-01' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-YY -85
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-85' );
Packit 106d3f
    is( $dt->year, '1985' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #--MMDD --0412
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '--0412' );
Packit 106d3f
    is( $dt->ymd, "${base_year}-04-12" );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #--MM-DD --04-12
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '--04-12' );
Packit 106d3f
    is( $dt->ymd, "${base_year}-04-12" );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #--MM --04
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '--04' );
Packit 106d3f
    is( $dt->ymd, "${base_year}-04-01" );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #---DD ---12
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '---12' );
Packit 106d3f
    is( $dt->ymd, "${base_year}-${base_month}-12" );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #+[YY]YYYYMMDD +0019850412
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '+0019850412' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #+[YY]YYYY-MM-DD +001985-04-12
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '+001985-04-12' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #+[YY]YYYY-MM +001985-04
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '+001985-04' );
Packit 106d3f
    is( $dt->ymd, '1985-04-01' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #+[YY]YYYY +001985
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '+001985' );
Packit 106d3f
    is( $dt->ymd, '1985-01-01' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #+[YY]YY +0019 (century)
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '+0019' );
Packit 106d3f
    is( $dt->ymd, '1901-01-01' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYDDD 1985102
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985102' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-DDD 1985-102
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-102' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYDDD 85102
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '85102' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YY-DDD 85-102
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '85-102' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-DDD -102
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-102' );
Packit 106d3f
    my $year = sprintf( "%04i", $base_year );
Packit 106d3f
    is( $dt->strftime( "%j" ), 102 );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #+[YY]YYYYDDD +001985102
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '+001985102' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #+[YY]YYYY-DDD +001985-102
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '+001985-102' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYWwwD 1985W155
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985W155' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-Www-D 1985-W15-5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-W15-5' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYWww 1985W15
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985W15' );
Packit 106d3f
    is( $dt->ymd, '1985-04-08' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-Www 1985-W15
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-W15' );
Packit 106d3f
    is( $dt->ymd, '1985-04-08' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYWwwD 85W155
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '85W155' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YY-Www-D 85-W15-5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '85-W15-5' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYWww 85W15
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '85W15' );
Packit 106d3f
    is( $dt->ymd, '1985-04-08' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YY-Www 85-W15
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '85-W15' );
Packit 106d3f
    is( $dt->ymd, '1985-04-08' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-YWwwD -5W155
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-5W155' );
Packit 106d3f
    is( $dt->year, '2005' );
Packit 106d3f
    is( $dt->week_number, '15' );
Packit 106d3f
    is( $dt->day_of_week, '5' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-Y-Www-D -5-W15-5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-5-W15-5' );
Packit 106d3f
    is( $dt->year, '2005' );
Packit 106d3f
    is( $dt->week_number, '15' );
Packit 106d3f
    is( $dt->day_of_week, '5' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-YWww -5W15
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-5W15' );
Packit 106d3f
    is( $dt->year, '2005' );
Packit 106d3f
    is( $dt->week_number, '15' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-Y-Www -5-W15
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-5-W15' );
Packit 106d3f
    is( $dt->year, '2005' );
Packit 106d3f
    is( $dt->week_number, '15' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-WwwD -W155
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-W155' );
Packit 106d3f
    is( $dt->week_number, '15' );
Packit 106d3f
    is( $dt->day_of_week, '5' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-Www-D -W15-5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-W15-5' );
Packit 106d3f
    is( $dt->week_number, '15' );
Packit 106d3f
    is( $dt->day_of_week, '5' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
# {
Packit 106d3f
#     #-Www -W15
Packit 106d3f
#     my $dt = $iso8601->parse_datetime( '-W15' );
Packit 106d3f
#     is( $dt->week_number, '15' );
Packit 106d3f
# }
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-W-D -W-5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-W-5' );
Packit 106d3f
    is( $dt->day_of_week, '5' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #+[YY]YYYYWwwD +001985W155
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '+001985W155' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #+[YY]YYYY-Www-D +001985-W15-5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '+001985-W15-5' );
Packit 106d3f
    is( $dt->ymd, '1985-04-12' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #+[YY]YYYYWww +001985W15
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '+001985W15' );
Packit 106d3f
    is( $dt->ymd, '1985-04-08' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #+[YY]YYYY-Www +001985-W15
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '+001985-W15' );
Packit 106d3f
    is( $dt->ymd, '1985-04-08' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh:mm:ss 23:20:50
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '23:20:50' );
Packit 106d3f
    is( $dt->hms, '23:20:50' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh:mm 23:20
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '23:20' );
Packit 106d3f
    is( $dt->hms, '23:20:00' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmss,ss 232050,5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '232050,5' );
Packit 106d3f
    is( $dt->hms, '23:20:50' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh:mm:ss,ss 23:20:50,5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '23:20:50,5' );
Packit 106d3f
    is( $dt->hms, '23:20:50' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmm,mm 2320,8
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '2320,8' );
Packit 106d3f
    is( $dt->hms, '23:20:48' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh:mm,mm 23:20,8
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '23:20,8' );
Packit 106d3f
    is( $dt->hms, '23:20:48' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh,hh 23,3
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '23,3' );
Packit 106d3f
    is( $dt->hms, '23:18:00' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-mm:ss -20:50
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-20:50' );
Packit 106d3f
    is( $dt->minute, '20' );
Packit 106d3f
    is( $dt->second, '50' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-mmss,s -2050,5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-2050,5' );
Packit 106d3f
    is( $dt->minute, '20' );
Packit 106d3f
    is( $dt->second, '50' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-mm:ss,s -20:50,5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-20:50,5' );
Packit 106d3f
    is( $dt->minute, '20' );
Packit 106d3f
    is( $dt->second, '50' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-mm,m -20,8
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '-20,8' );
Packit 106d3f
    is( $dt->minute, '20' );
Packit 106d3f
    is( $dt->second, '48' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #--ss,s --50,5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '--50,5' );
Packit 106d3f
    is( $dt->second, '50' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmssZ 232030Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '232030Z' );
Packit 106d3f
    is( $dt->hms, '23:20:30' );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmss.ssZ 232030.5Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '232030.5Z' );
Packit 106d3f
    is( $dt->hms, '23:20:30' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh:mm:ssZ 23:20:30Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '23:20:30Z' );
Packit 106d3f
    is( $dt->hms, '23:20:30' );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmssZ 23:20:30.5Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '23:20:30.5Z' );
Packit 106d3f
    is( $dt->hms, '23:20:30' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmZ 2320Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '2320Z' );
Packit 106d3f
    is( $dt->hms, '23:20:00' );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh:mmZ 23:20Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '23:20Z' );
Packit 106d3f
    is( $dt->hms, '23:20:00' );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhZ 23Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '23Z' );
Packit 106d3f
    is( $dt->hms, '23:00:00' );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmss[+/-]hhmm 152746+0100 152746-0500
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '152746+0100' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->time_zone->name, '+0100' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmss[+/-]hhmm 152746+0100 152746-0500
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '152746-0500' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->time_zone->name, '-0500' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmss.ss[+/-]hhmm 152746.5+0100 152746.5-0500
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '152746.5+0100' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, '+0100' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmss.ss[+/-]hh:mm 152746.5+01:00 152746.5-05:00
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '152746.5-05:00' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, '-0500' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmss[+/-]hh:mm 152746.05+01:00 152746.05-05:00
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '152746.05-05:00' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->nanosecond, 50_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, '-0500' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh:mm:ss[+/-]hh:mm 15:27:46+01:00 15:27:46-05:00
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '15:27:46+01:00' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->time_zone->name, '+0100' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh:mm:ss[+/-]hh:mm 15:27:46+01:00 15:27:46-05:00
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '15:27:46-05:00' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->time_zone->name, '-0500' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmss.ss[+/-]hhmm 15:27:46.5+0100 15:27:46.5-0500
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '15:27:46.5+0100' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, '+0100' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh:mm:ss.ss[+/-]hh:mm 15:27:46.5+01:00 15:27:46.5-05:00
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '15:27:46.5-05:00' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, '-0500' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmss[+/-]hh 152746+01 152746-05
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '152746+01' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->time_zone->name, '+0100' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmss[+/-]hh 152746+01 152746-05
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '152746-05' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->time_zone->name, '-0500' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh:mm:ss[+/-]hh 15:27:46+01 15:27:46-05
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '15:27:46+01' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->time_zone->name, '+0100' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh:mm:ss[+/-]hh 15:27:46+01 15:27:46-05
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '15:27:46-05' );
Packit 106d3f
    is( $dt->hms, '15:27:46' );
Packit 106d3f
    is( $dt->time_zone->name, '-0500' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYMMDDThhmmss 19850412T101530
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '19850412T101530' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->time_zone->name, 'floating' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-MM-DDThh:mm:ss 1985-04-12T10:15:30
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->time_zone->name, 'floating' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYMMDDThhmmss.ss 19850412T101530.5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '19850412T101530.5' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, 'floating' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-MM-DDThh:mm:ss.ss 1985-04-12T10:15:30.5
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-04-12T10:15:30.5' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, 'floating' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYMMDDThhmmssZ 19850412T101530Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '19850412T101530Z' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-MM-DDThh:mm:ssZ 1985-04-12T10:15:30Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-04-12T10:15:30Z' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYMMDDThhmmss.ssZ 19850412T101530.5Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '19850412T101530.5Z' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-MM-DDThh:mm:ss.ssZ 1985-04-12T10:15:30.5Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-04-12T10:15:30.5Z' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYMMDDThhmmss+hhmm 19850412T101530+0400
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '19850412T101530+0400' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->time_zone->name, '+0400' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-MM-DDThh:mm:ss+hh:mm 1985-04-12T10:15:30+04:00
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-04-12T10:15:30+04:00' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->time_zone->name, '+0400' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYMMDDThhmmss.ss+hhmm 19850412T101530.5+0400
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '19850412T101530.5+0400' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, '+0400' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-MM-DDThh:mm:ss.ss+hh:mm 1985-04-12T10:15:30.5+04:00
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-04-12T10:15:30.5+04:00' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->nanosecond, 500_000_000 );
Packit 106d3f
    is( $dt->time_zone->name, '+0400' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYMMDDThhmmss+hh 19850412T101530+04
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '19850412T101530+04' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->time_zone->name, '+0400' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-MM-DDThh:mm:ss+hh 1985-04-12T10:15:30+04
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-04-12T10:15:30+04' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:30' );
Packit 106d3f
    is( $dt->time_zone->name, '+0400' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYMMDDThhmm 19850412T1015
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '19850412T1015' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:00' );
Packit 106d3f
    is( $dt->time_zone->name, 'floating' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-MM-DDThh:mm 1985-04-12T10:15
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-04-12T10:15' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:00' );
Packit 106d3f
    is( $dt->time_zone->name, 'floating' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYDDDThhmmZ 1985102T1015Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985102T1015Z' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:00' );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-DDDThh:mmZ 1985-102T10:15Z
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-102T10:15Z' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:00' );
Packit 106d3f
    is( $dt->time_zone->name, 'UTC' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYYWwwDThhmm+hhmm 1985W155T1015+0400
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985W155T1015+0400' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:00' );
Packit 106d3f
    is( $dt->time_zone->name, '+0400' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #YYYY-Www-DThh:mm+hh 1985-W15-5T10:15+04
Packit 106d3f
    my $dt = $iso8601->parse_datetime( '1985-W15-5T10:15+04' );
Packit 106d3f
    is( $dt->iso8601, '1985-04-12T10:15:00' );
Packit 106d3f
    is( $dt->time_zone->name, '+0400' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
# parse_time
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmmss 232050
Packit 106d3f
    my $dt = $iso8601->parse_time( '232050' );
Packit 106d3f
    is( $dt->hms, '23:20:50' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hhmm 2320
Packit 106d3f
    my $dt = $iso8601->parse_time( '2320' );
Packit 106d3f
    is( $dt->hms, '23:20:00' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #hh 23
Packit 106d3f
    my $dt = $iso8601->parse_time( '23' );
Packit 106d3f
    is( $dt->hms, '23:00:00' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-mmss -2050
Packit 106d3f
    my $dt = $iso8601->parse_time( '-2050' );
Packit 106d3f
    is( $dt->minute, '20' );
Packit 106d3f
    is( $dt->second, '50' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #-mm -20
Packit 106d3f
    my $dt = $iso8601->parse_time( '-20' );
Packit 106d3f
    is( $dt->minute, '20' );
Packit 106d3f
}
Packit 106d3f
Packit 106d3f
{
Packit 106d3f
    #--ss --50
Packit 106d3f
    my $dt = $iso8601->parse_time( '--50' );
Packit 106d3f
    is( $dt->second, '50' );
Packit 106d3f
}