NAME
DateTime::Format::ISO8601 - Parses ISO8601 formats
SYNOPSIS
use DateTime::Format::ISO8601;
my $dt = DateTime::Format::ISO8601->parse_datetime( $str );
or
my $dt = DateTime::Format::ISO8601->parse_time( $str );
DESCRIPTION
Parses almost all ISO 8601:2000(E) date and time formats. ISO 8601:2000(E) time-intervals will be supported in a later release.
FORMATS
There are 6 string that can match against date only or time only formats. The parse_datetime
method will attempt to match these ambiguous strings against date only formats. If you want to match against the time only formats see the parse_time
method.
Conventions
Expanded ISO8601
These formats are supported with exactly 6 digits for the year. Support for a variable number of digits will be in a later release.
Precision
If a format doesn't include full precision all larger time unit values are filled in using the current date/time.
Fractional time
There is no limit on the expressed precision.
Supported via parse_datetime
The supported formats are listed by the section of ISO 8601:2000(E) in which they appear.
5.2 Dates
5.2.1.1
YYYYMMDD
YYYY-MM-DD
5.2.1.2
YYYY-MM
YYYY
YY
5.2.1.3
YYMMDD
YY-MM-DD
-YYMM
-YY-MM
-YY
--MMDD
--MM-DD
--MM
---DD
5.2.1.4
+[YY]YYYYMMDD
+[YY]YYYY-MM-DD
+[YY]YYYY-MM
+[YY]YYYY
+[YY]YY
5.2.2.1
YYYYDDD
YYYY-DDD
5.2.2.2
YYDDD
YY-DDD
-DDD
5.2.2.3
+[YY]YYYYDDD
+[YY]YYYY-DDD
5.3.2.1
YYYYWwwD
YYYY-Www-D
5.2.3.2
YYYYWww
YYYY-Www
YYWwwD
YY-Www-D
YYWww
YY-Www
-YWwwD
-Y-Www-D
-YWww
-Y-Www
-WwwD
-Www-D
-Www
-W-D
5.2.3.4
+[YY]YYYYWwwD
+[YY]YYYY-Www-D
+[YY]YYYYWww
+[YY]YYYY-Www
5.3 Time of Day
5.3.1.1 - 5.3.1.3
maybe prefixed with 'T'
5.3.1.1
hh:mm:ss
5.3.1.2
hh:mm
5.3.1.3 - 5.3.1.4
fractional (decimal) separator maybe either ',' or '.'
5.3.1.3
hhmmss,ss
hh:mm:ss,ss
hhmm,mm
hh:mm,mm
hh,hh
5.3.1.4
-mm:ss
-mmss,s
-mm:ss,s
-mm,m
--ss,s
5.3.3 - 5.3.4.2
maybe prefixed with 'T'
5.3.3
hhmmssZ
hh:mm:ssZ
hhmmZ
hh:mmZ
hhZ
5.3.4.2
hhmmss[+-]hhmm
hh:mm:ss[+-]hh:mm
hhmmss[+-]hh
hh:mm:ss[+-]hh
5.4 Combinations of date and time of day
5.4.1
YYYYMMDDThhmmss
YYYY-MM-DDThh:mm:ss
YYYYMMDDThhmmssZ
YYYY-MM-DDThh:mm:ssZ
YYYYMMDDThhmmss[+-]hhmm
YYYY-MM-DDThh:mm:ss[+-]hh:mm
YYYYMMDDThhmmss[+-]hh
YYYY-MM-DDThh:mm:ss[+-]hh
5.4.2
Support for this section is not complete.
YYYYMMDDThhmm
YYYY-MM-DDThh:mm
YYYYDDDThhmmZ
YYYY-DDDThh:mmZ
YYYYWwwDThhmm[+-]hhmm
YYYY-Www-DThh:mm[+-]hh
5.5 Time-Intervals
Will be supported in a later release.
Supported via parse_time
5.3.1.1 - 5.3.1.3
maybe prefixed with 'T'
5.3.1.1
hhmmss
5.3.1.2
hhmm
hh
5.3.1.4
-mmss
-mm
--ss
STANDARDS DOCUMENT
Title
ISO8601:2000(E)
Data elements and interchange formats - information exchange -
Representation of dates and times
Second edition 2000-12-15
Reference Number
ISO/TC 154 N 362
CREDITS
Iain "Spoon" Truskett (SPOON) who wrote DateTime::Format::Builder
. That has grown into The Vacuum Energy Powered Swiss Army
Katana of date and time parsing. This module was inspired by and conceived in honor of DateTime::Format::Builder
.
Tom Phoenix (PHOENIX) and PDX.pm for helping me solve the ISO week conversion bug. Not by fixing the code but motivation me to fix it so I could participate in a game of Zendo
.
Everyone at the DateTime Asylum
.
SUPPORT
Support for this module is provided via the datetime@perl.org email list. See http://lists.perl.org/ for more details.
AUTHOR
Joshua Hoblitt <jhoblitt@cpan.org>
COPYRIGHT
Copyright (c) 2003 Joshua Hoblitt. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
The full text of the license can be found in the LICENSE file included with this module.
SEE ALSO
datetime@perl.org mailing list
http://datetime.perl.org/