This message includes strawman proposals for
(a) a simplified pattern syntax and
(b) simple style specifiers
for DateTimeFormat objects, which can replace the current format specification
through nine separate properties for the components of formatted date and time.
Several people have recently proposed to reintroduce patterns as a way to
specify the format of a DateTimeFormat object, because patterns give user
experience designers precise control over the format and can be stored in
resource bundles for localizability. The Unicode Locale Data Markup Language
provides a comprehensive pattern syntax for date and time formats [1], however,
many of the features of this syntax are rarely used, and it is unlikely that
all implementations of the Globalization API will support all of them. The
proposal below includes the most commonly used pattern elements, and simplifies
the syntax somewhat by relying on existing information about locale behavior.
The reintroduction of patterns also gives us an opportunity to reconsider the
current format specifications as well. The current format specifications give
developers a lot of knobs to play with (nine properties for the different
components of a formatted date and time), giving the impression of precise
control, but in reality they're connected to the underlying engine only via
rubber bands: The implementation has to support only a few combinations of
settings, and has great freedom in choosing its behavior when other
combinations are requested. In addition, despite the large number of
combinations, the format specifications still cannot describe all formats that
are in common use [2]. If patterns give developers a low-level mechanism with
full control over the formats they want to use, then the current format
specifications can be replaced with a high-level mechanism that provides access
to a few pre-made formats that are guaranteed to be supported across
implementations and locales.
[1] http://unicode.org/reports/tr35/#Date_Format_Patterns
[2] https://bugs.ecmascript.org/show_bug.cgi?id=229
Comments?
Regards,
Norbert
DateTimeFormat Pattern Syntax
-----------------------------
All unquoted ASCII letters A-Z, a-z are reserved. To be used as literal text,
they must be in quotes. Other characters can be inserted as needed, e.g.,
punctuation (:, /) or non-ASCII letters (年, 년).
Weekday:
WWW - abbreviated weekday name.
WWWW - full weekday name.
Year:
Y, YY, YYY, YYYY, YYYYY - year represented as number, 0-padded to specified
number of digits. For YY year % 100 is used.
DateTimeFormat may add an era if necessary for the calendar used.
Month:
M, MM - month represented as number, 0-padded to specified number of digits.
MMM - abbreviated month name.
MMMM - full month name.
DateTimeFormat uses embedded or stand-alone month names based on the locale and
the presence of the day component.
Day:
D, DD - day represented as number, 0-padded to specified number of digits.
Period:
aaa - abbreviated day period.
Hour:
h, hh: hour represented as number, 0-padded to specified number of digits.
DateTimeFormat uses 12-hour time if "aaa" is present, 24-hour otherwise; this
can be overridden by the hour12 option. DateTimeFormat uses 0- or 1-based numbers as
appropriate for the locale.
Minute:
m, mm: minute represented as number, 0-padded to specified number of digits.
Second:
s, ss: second represented as number, 0-padded to specified number of digits.
DateTimeFormat Style Specifiers
-------------------------------
The specifiers are strings with two parts, the first indicating the date and
time components included in the format, the second indicating short (numeric),
medium (abbreviated), or long form. Specifiers with weekday, year, month, day
components are used in a dateStyle property of the DateTimeFormat options;
specifiers with hour, minute, second components in a timeStyle property. The
exact mapping from style specifiers to concrete DateTimeFormat patterns is
implementation and locale dependent.
Support required in all implementations:
"WYMD-long": weekday, year, month, day components; long form
"YMD-long": year, month, day components; long form
"YMD-short": year, month, day components; numeric form
"YM-long": year, month components; long form
"MD-medium": month, day components; abbreviated form
"hms-short": hour, minute, second components; numeric form
"hm-short": hour, minute, second components; numeric form
Allowed, but not required; fall back to required formats as specified:
"WYMD-medium": weekday, year, month, day components; abbreviated form;
"WYMD-long"
"YMD-medium": year, month, day components; abbreviated form; "YMD-long"
"hms-medium": hour, minute, second components; abbreviated form; "hms-short"
"hm-medium": hour, minute, second components; abbreviated form; "hm-short"
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss