NAME
DateTime::Format::CLDR - Parse and format CLDR time patterns
SYNOPSIS
use DateTime::Format::CLDR;
my $cldr = new DateTime::Format::CLDR(
pattern => 'HH:mm:ss',
locale => 'de_AT',
time_zone => 'Europe/Vienna',
);
my $dt = $cldr->parse_datetime('23:16:42');
$cldr->format_datetime($dt);
# 23:16:42
# Get pattern from selected locale
my $cldr = new DateTime::Format::CLDR(
locale => 'de_AT',
);
# pattern is set to 'date_format_medium' from DateTime::Locale::de_AT
my $dt = $cldr->parse_datetime('23.11.2007');
# Croak when things go wrong:
my $cldr = new DateTime::Format::CLDR(
locale => 'de_AT',
on_error => 'croak',
);
# This will croak
$cldr->parse_datetime('23.33.2007');
DESCRIPTION
This module provides a parser (and also a formater) for datetime strings using patterns as defined by the Unicode CLDR Project (Common Locale Data Repository). http://unicode.org/cldr/.
CLDR format is supported by DateTime and DateTime::Locale starting with version 0.40.
METHODS
Constructor
new
DateTime::Format::CLDR->new(%PARAMS);
The following parameters are used by DateTime::Format::CLDR:
locale
Locale.
See locale accessor.
pattern (optional)
CLDR pattern. If you don't provide a pattern the
date_format_medium
pattern from DateTime::Local for the selected locale will be used.See pattern accessor.
time_zone (optional)
Timezone that should be used.
See time_zone accessor.
on_error (optional)
Error behaviour.
See on_error accessor.
incomplete (optional)
Set the behaviour how to handle incomplete Date information.
See incomplete accessor.
Accessors
pattern
Get/set pattern. See "CLDR Patterns" in DateTime for details about patterns.
time_zone
Get/set time_zone. Returns a DateTime::TimeZone
object.
Accepts either a timezone name or a DateTime::TimeZone
object.
locale
Get/set a locale. Returns a DateTime::Locale
object.
Accepts either a locale name or a DateTime::Locale::*
object.
on_error
Get/set the error behaviour.
Accepts the following values
'undef'
Returns undef on error
'croak'
Croak on error
CODEREF
Run the given coderef on error.
incomplete
Set the behaviour how to handle incomplete Date information.
Accepts the following values
1
Sets the missing values to '1'. Thus if you only parse a time you would get '0001-01-01' as the date.
'incomplete'
Create a DateTime::Incomplete object instead.
CODEREF
Run the given coderef on incomplete values. The code reference will be called with the
DateTime::Format::CLDR
object and a hash of parsed values as supplied toDateTime->new
. It should return a modified hash.
Public Methods
parse_datetime
my $datetime = $cldr->parse_datetime($string);
Parses a string and returns a DateTime
object on success. If the string cannot be parsed with the given pattern undef
is returned.
format_datetime
my $string = $cldr->format_datetime($datetime);
Formats a DateTime
object using the set time_zone, locale and pattern.
CLDR PATTERNS
See "CLDR Patterns" in DateTime.
CLDR provides the following pattenrs:
G{1,3}
The abbreviated era (BC, AD).
Not used to construct a date.
GGGG
The wide era (Before Christ, Anno Domini).
Not used to construct a date.
GGGGG
The narrow era, if it exists (and it mostly doesn't).
Not used to construct a date.
y and y{3,}
The year, zero-prefixed as needed.
yy
This is a special case. It always produces a two-digit year, so "1976" becomes "76".
Y{1,}
The week of the year, from
$dt->week_year()
.u{1,}
Same as "y" except that "uu" is not a special case.
Q{1,2}
The quarter as a number (1..4).
QQQ
The abbreviated format form for the quarter.
QQQQ
The wide format form for the quarter.
q{1,2}
The quarter as a number (1..4).
qqq
The abbreviated stand-alone form for the quarter.
qqqq
The wide stand-alone form for the quarter.
M{1,2}
The numerical month.
MMM
The abbreviated format form for the month.
MMMM
The wide format form for the month.
MMMMM
The narrow format form for the month.
L{1,2}
The numerical month.
LLL
The abbreviated stand-alone form for the month.
LLLL
The wide stand-alone form for the month.
LLLLL
The narrow stand-alone form for the month.
w{1,2}
The week of the year, from
$dt->week_number()
.Not used to construct a date.
W
The week of the month, from
$dt->week_of_month()
.Not used to construct a date.
d{1,2}
The numeric day of of the month.
D{1,3}
The numeric day of of the year.
Not used to construct a date.
F
The day of the week in the month, from
$dt->weekday_of_month()
.g{1,}
The modified Julian day, from
$dt->mjd()
.E{1,3}
The abbreviated format form for the day of the week.
EEEE
The wide format form for the day of the week.
EEEEE
The narrow format form for the day of the week.
e{1,2}
The local day of the week, from 1 to 7. This number depends on what day is considered the first day of the week, which varies by locale. For example, in the US, Sunday is the first day of the week, so this returns 2 for Monday.
eee
The abbreviated format form for the day of the week.
eeee
The wide format form for the day of the week.
eeeee
The narrow format form for the day of the week.
c
The numeric day of the week (not localized).
ccc
The abbreviated stand-alone form for the day of the week.
cccc
The wide stand-alone form for the day of the week.
ccccc
The narrow format form for the day of the week.
a
The localized form of AM or PM for the time.
h{1,2}
The hour from 1-12.
H{1,2}
The hour from 0-23.
K{1,2}
The hour from 0-11.
k{1,2}
The hour from 1-24.
j{1,2}
The hour, in 12 or 24 hour form, based on the preferred form for the locale. In other words, this is equivalent to either "h{1,2}" or "H{1,2}".
m{1,2}
The minute.
s{1,2}
The second.
S{1,}
Not supported by DateTime::Format::CLDR
A{1,}
Not supported by DateTime::Format::CLDR
z{1,3}
The time zone short name.
zzzz
The time zone long name.
Z{1,3}
The time zone short name and the offset as one string, so something like "CDT-0500".
ZZZZ
The time zone long name.
v{1,3}
The time zone short name.
vvvv
The time zone long name.
V{1,3}
The time zone short name.
VVVV
The time zone long name.
SUPPORT
Please report any bugs or feature requests to datetime-format-cldr@rt.cpan.org
, or through the web interface at http://rt.cpan.org/Public/Bug/Report.html?Queue=DateTime::Format::CLDR. I will be notified and then you'll automatically be notified of the progress on your report as I make changes.
AUTHOR
Maroš Kollár
CPAN ID: MAROS
maros [at] k-1.com
L<http://www.revdev.at>
ACKNOWLEDGEMENTS
This module was written for Revdev http://www.revdev.at, a nice litte software company I run with Koki and Domm (http://search.cpan.org/~domm/).
COPYRIGHT
DateTime::Format::CLDR is Copyright (c) 2008 Maroš Kollár - http://www.revdev.at
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
DateTime, DateTime::Locale, DateTime::TimeZone and DateTime::Format::Strptime