Return a function that formats a date into parts tokens according to the given options. The default formatting is numeric year, month, and day (i.e., { skeleton: "yMd" }.
The returned function is invoked with one argument: the Date instance value to be formatted.
Please, see .dateFormatter() options.
Date instance to be formatted, eg. new Date();
An Array of objects containing the formatted date in parts. The returned structure looks like this:
[
{ type: "day", value: "17" },
{ type: "weekday", value: "Monday" }
]Possible types are the following:
-
dayThe string used for the day, e.g.,
"17","١٦". -
dayPeriodThe string used for the day period, e.g.,
"AM","PM". -
eraThe string used for the era, e.g.,
"AD","d. C.". -
hourThe string used for the hour, e.g.,
"3","03". -
literalThe string used for separating date and time values, e.g.,
"/",", ","o'clock"," de ". -
minuteThe string used for the minute, e.g.,
"00". -
monthThe string used for the month, e.g.,
"12". -
secondThe string used for the second, e.g.,
"07"or"42". -
timeZoneNameThe string used for the name of the time zone, e.g.,
"EST". -
weekdayThe string used for the weekday, e.g.,
"M","Monday","Montag". -
yearThe string used for the year, e.g.,
"2012","96".
Prior to using any date methods, you must load cldr/main/{locale}/ca-gregorian.json, cldr/main/{locale}/timeZoneNames.json, cldr/supplemental/timeData.json, cldr/supplemental/weekData.json, and the CLDR content required by the number module. Read CLDR content if you need more information.
You can use the static method Globalize.dateToPartsFormatter(), which uses the default locale.
var formatter;
Globalize.locale( "en" );
formatter = Globalize.dateToPartsFormatter();
formatter( new Date( 2010, 10, 30 ) );
// > [
// { "type": "month", "value": "11" },
// { "type": "literal", "value": "/" },
// { "type": "day", "value": "30" },
// { "type": "literal", "value": "/" },
// { "type": "year", "value": "2010" }
// ]You can use the instance method .dateToPartsFormatter(), which uses the instance locale.
var enFormatter = Globalize( "en" ).dateToPartsFormatter(),
deFormatter = Globalize( "de" ).dateToPartsFormatter();
enFormatter( new Date( 2010, 10, 30 ) );
// > [
// { "type": "month", "value": "11" },
// { "type": "literal", "value": "/" },
// { "type": "day", "value": "30" },
// { "type": "literal", "value": "/" },
// { "type": "year", "value": "2010" }
// ]
deFormatter( new Date( 2010, 10, 30 ) );
// > [
// { type: 'day', value: '30' },
// { type: 'literal', value: '.' },
// { type: 'month', value: '11' },
// { type: 'literal', value: '.' },
// { type: 'year', value: '2010' }
// ]The information is available separately and it can be formatted and concatenated again in a customized way. For example by using Array.prototype.map(), arrow functions, a switch statement, template literals, and Array.prototype.reduce().
var formatter;
Globalize.locale( "en" );
formatter = Globalize.dateToPartsFormatter({datetime: "short"});
formatter( new Date( 2010, 10, 30, 17, 55 ) ).map(({type, value}) => {
switch ( type ) {
case "year": return `<strong>${value}</strong>`;
default: return value;
}
}).join( "" );
// > "11/30/<strong>10</strong>, 5:55 PM"Please, see .dateFormatter() example for additional examples such as using date, time, datetime, and skeleton options.
For improved performance on iterations, first create the formatter. Then, reuse it on each loop.
// In an application, this array could have a few hundred entries
var dates = [ new Date( 2010, 10, 30, 17, 55 ), new Date( 2015, 3, 18, 4, 25 ) ];
var formatter = Globalize( "en" ).dateToPartsFormatter({ time: "short" });
var formattedDates = dates.map(function( date ) {
return formatter( date );
});
// > [
// [
// { "type": "hour", "value": "5" },
// { "type": "literal", "value": ":" },
// { "type": "minute", "value": "55" },
// { "type": "literal", "value": " " },
// { "type": "dayperiod", "value": "PM" }
// ],
// [
// { "type": "hour", "value": "4" },
// { "type": "literal", "value": ":" },
// { "type": "minute", "value": "25" },
// { "type": "literal", "value": " " },
// { "type": "dayperiod", "value": "AM" }
// ]
// ]