DateTime-Format-Unicode
view release on metacpan or search on metacpan
NAME
DateTime::Format::Unicode - Unicode CLDR Formatter for DateTime
SYNOPSIS
use DateTime::Format::Unicode;
my $fmt = DateTime::Format::Unicode->new(
locale => 'ja-Kana-JP',
# optional, defaults to the locale medium size date formatting
# See: DateTime::Locale::FromCLDR for more information
pattern => 'HH:mm:ss',
# optional
time_zone => 'Asia/Tokyo',
# will make error become fatal and have this API die instead of setting an exception object
on_error => 'fatal',
) || die( DateTime::Format::Unicode->error );
or, maybe, just:
my $fmt = DateTime::Format::Unicode->new;
which, will default to "locale" "en" with date medium-size format
pattern "MMM d, y"
VERSION
v0.1.0
DESCRIPTION
This is a Unicode CLDR <https://cldr.unicode.org/> (Common Locale Data
Repository) formatter for DateTime
It differs from the default formatter used in DateTime with its method
format_cldr in several aspects:
1. It uses DateTime::Locale::FromCLDR
A much more comprehensive and accurate API to dynamically access the
Unicode "CLDR" data whereas the module DateTime relies on,
DateTime::Locale, which uses static data from over 1,000
pre-generated modules.
2. It allows for any "locale"
Since, it uses dynamic data, you can use any "locale", from the
simple "en" to more complex "es-001-valencia", or even
"ja-t-de-t0-und-x0-medical"
3. It allows formatting of datetime intervals
Datetime intervals are very important, and unfortunately unsupported
by DateTime as of July 2024.
4. It supports more pattern tokens
DateTime format_cldr does not support all of the CLDR pattern tokens
<https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patter
ns>, but DateTime::Format::Unicode does.
Known pattern tokens unsupported by DateTime are:
* "b"
Period of the day, such as "am", "pm", "noon", "midnight"
See "calendar_term" in Locale::Unicode::Data and its
corollary "day_period" in Locale::Unicode::Data
* "B"
Flexible day periods, such as "at night"
See "calendar_term" in Locale::Unicode::Data and its
corollary "day_period" in Locale::Unicode::Data
* "O"
Zone, such as "O" to get the short localized GMT format
"GMT-8", or "OOOO" to get the long localized GMT format
"GMT-08:00"
* "r"
Related Gregorian year (numeric).
The documentation states that "For the Gregorian calendar,
the ârâ year is the same as the âuâ year."
* "U"
Cyclic year name. However, since this is for non gregorian
calendars, like Chinese or Hindu calendars, and since
DateTime only supports gregorian calendar, we do not support
it either.
* "x"
Timezone, such as "x" would be -08, "xx" -0800 or +0800,
"xxx" would be "-08:00" or "+08:00", "xxxx" would be -0800
or +0000 and "xxxxx" would be "-08:00", or "-07:52:58" or
"+00:00"
* "X"
Timezone, such as "X" (-08 or +0530 or "Z"), "XX" (-0800 or
"Z"), "XXX" ("-08:00"), "XXXX" (-0800 or -075258 or "Z"),
"XXXXX" ("-08:00" or "-07:52:58" or "Z")
DateTime::Format::Unicode only formats "CLDR" datetime patterns, and
does not parse them back into a DateTime object. If you want to achieve
that, there is already the module DateTime::Format::CLDR that does this.
DateTime::Format::CLDR relies on "format_cldr" in DateTime for "CLDR"
formatting by the way.
CONSTRUCTOR
new
This takes some hash or hash reference of options, instantiates a new
DateTime::Format::Unicode object, and returns it.
Supported options are as follows. Each option can be later accessed or
modified by their associated method.
* "locale"
A locale, which may be very simple like "en" or much more complex
like "ja-t-de-t0-und-x0-medical" or maybe "es-039-valencia"
(valencian variant of Spanish as spoken in South Europe)
If not provided, this will default to "en"
* "on_error"
Specifies what to do upon error. Possible values are: "undef"
(default behaviour), "fatal" (will die), or a "CODE" reference that
( run in 0.901 second using v1.01-cache-2.11-cpan-39bf76dae61 )