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](https://metacpan.org/pod/DateTime)
It differs from the default formatter used in [DateTime](https://metacpan.org/pod/DateTime) with its method [format\_cldr](https://metacpan.org/pod/DateTime#format_cldr) in several aspects:
- 1. It uses [DateTime::Locale::FromCLDR](https://metacpan.org/pod/DateTime%3A%3ALocale%3A%3AFromCLDR)
A much more comprehensive and accurate API to dynamically access the Unicode `CLDR` data whereas the module [DateTime](https://metacpan.org/pod/DateTime) relies on, [DateTime::Locale](https://metacpan.org/pod/DateTime%3A%3ALocale), which uses sta...
- 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](https://metacpan.org/pod/DateTime) as of July 2024.
- 4. It supports more pattern tokens
[DateTime](https://metacpan.org/pod/DateTime) [format\_cldr](https://metacpan.org/pod/DateTime#format_cldr) does not support all of the [CLDR pattern tokens](https://unicode.org/reports/tr35/tr35-dates.html#Date_Format_Patterns), but [DateTime::F...
Known pattern tokens unsupported by [DateTime](https://metacpan.org/pod/DateTime) are:
- `b`
Period of the day, such as `am`, `pm`, `noon`, `midnight`
See ["calendar\_term" in Locale::Unicode::Data](https://metacpan.org/pod/Locale%3A%3AUnicode%3A%3AData#calendar_term) and its corollary ["day\_period" in Locale::Unicode::Data](https://metacpan.org/pod/Locale%3A%3AUnicode%3A%3AData#day_period...
- `B`
Flexible day periods, such as `at night`
See ["calendar\_term" in Locale::Unicode::Data](https://metacpan.org/pod/Locale%3A%3AUnicode%3A%3AData#calendar_term) and its corollary ["day\_period" in Locale::Unicode::Data](https://metacpan.org/pod/Locale%3A%3AUnicode%3A%3AData#day_period...
- `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](https://metacpan.org/pod/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](https://metacpan.org/pod/DateTime%3A%3AFormat%3A%3AUnicode) only formats `CLDR` datetime patterns, and does not parse them back into a [DateTime](https://metacpan.org/pod/DateTime) object. If you want to achieve that, ther...
# CONSTRUCTOR
## new
This takes some hash or hash reference of options, instantiates a new [DateTime::Format::Unicode](https://metacpan.org/pod/DateTime%3A%3AFormat%3A%3AUnicode) object, and returns it.
Supported options are as follows. Each option can be later accessed or modified by their associated method.
- `locale`
A [locale](https://metacpan.org/pod/Locale%3A%3AUnicode), 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 will be called with the [exception object](https://metacpan.org/pod/DateTime%3A%3AFormat%3A%3AUnicode%3A%3AException...
- `pattern`
A `CLDR` pattern. If none is provided, this will default to the medium-size date pattern for the given `locale`. For example, as per the `CLDR`, for English, this would be `MMM d, y` whereas for the `locale` `ja`, this would be `y/MM/dd`
- `time_zone`
Set the timezone by providing either a [DateTime::TimeZone](https://metacpan.org/pod/DateTime%3A%3ATimeZone) object, or a string representing a timezone.
It defaults to the special [DateTime](https://metacpan.org/pod/DateTime) timezone [floating](https://metacpan.org/pod/DateTime%3A%3ATimeZone%3A%3AFloating)
# METHODS
## format\_datetime
This takes a [DateTime](https://metacpan.org/pod/DateTime) object, or if none is provided, it will instantiate one using ["now" in DateTime](https://metacpan.org/pod/DateTime#now), and formats the [pattern](#pattern) that was set and return the resul...
# Errors
( run in 0.548 second using v1.01-cache-2.11-cpan-39bf76dae61 )