getDateFormatterSource() function
Returns a string of JavaScript source that evaluates to a date formatter function with the same (date: Date | number) => string
signature as the function returned by getDateFormatter().
Signature:
export declare function getDateFormatterSource(locales: string | string[], tokens: string | DateToken[], timeZone?: string | ((err: DateFormatError) => void), onError?: (err: DateFormatError) => void): string;
Parameters
Parameter | Type | Description |
---|---|---|
locales | string | string[] | One or more valid BCP 47 language tags, e.g. fr or en-CA |
tokens | string | DateToken[] | An ICU DateFormat skeleton string, or an array or parsed DateToken tokens |
timeZone | string | ((err: DateFormatError) => void) | (Optional) |
onError | (err: DateFormatError) => void | (Optional) If defined, will be called separately for each encountered parsing error and unsupported feature. |
Returns:
string
Remarks
The returned function will memoize an Intl.DateTimeFormat
instance.
Example
import { getDateFormatterSource } from '@messageformat/date-skeleton'
getDateFormatterSource('en-CA', 'GrMMMdd', console.error)
// '(function() {\n' +
// ' var opt = {"era":"short","calendar":"gregory","year":"numeric",' +
// '"month":"short","day":"2-digit"};\n' +
// ' var dtf = new Intl.DateTimeFormat("en-CA", opt);\n' +
// ' return function(value) { return dtf.format(value); }\n' +
// '})()'
const src = getDateFormatterSource('en-CA', 'hamszzzz', console.error)
// '(function() {\n' +
// ' var opt = {"hour":"numeric","hourCycle":"h12","minute":"numeric",' +
// '"second":"numeric","timeZoneName":"long"};\n' +
// ' var dtf = new Intl.DateTimeFormat("en-CA", opt);\n' +
// ' return function(value) { return dtf.format(value); }\n' +
// '})()'
const fmt = new Function(`return ${src}`)()
const date = new Date(2006, 0, 2, 15, 4, 5, 789)
fmt(date) // '3:04:05 p.m. Newfoundland Daylight Time'