123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- import { toDate } from "./toDate.js";
- /**
- * The locale string (see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#locales_argument).
- * @deprecated
- *
- * [TODO] Remove in v4
- */
- /**
- * The format options (see: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat#options)
- */
- /**
- * The locale options.
- */
- /**
- * @name intlFormat
- * @category Common Helpers
- * @summary Format the date with Intl.DateTimeFormat (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat).
- *
- * @description
- * Return the formatted date string in the given format.
- * The method uses [`Intl.DateTimeFormat`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat) inside.
- * formatOptions are the same as [`Intl.DateTimeFormat` options](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat#using_options)
- *
- * > ⚠️ Please note that before Node version 13.0.0, only the locale data for en-US is available by default.
- *
- * @param date - The date to format
- *
- * @returns The formatted date string
- *
- * @throws `date` must not be Invalid Date
- *
- * @example
- * // Represent 4 October 2019 in middle-endian format:
- * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456))
- * //=> 10/4/2019
- */
- /**
- * @param date - The date to format
- * @param localeOptions - An object with locale
- *
- * @returns The formatted date string
- *
- * @throws `date` must not be Invalid Date
- *
- * @example
- * // Represent 4 October 2019 in Korean.
- * // Convert the date with locale's options.
- * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {
- * locale: 'ko-KR',
- * })
- * //=> 2019. 10. 4.
- */
- /**
- * @param date - The date to format
- * @param formatOptions - The format options
- *
- * @returns The formatted date string
- *
- * @throws `date` must not be Invalid Date
- *
- * @example
- * // Represent 4 October 2019.
- * // Convert the date with format's options.
- * const result = intlFormat.default(new Date(2019, 9, 4, 12, 30, 13, 456), {
- * year: 'numeric',
- * month: 'numeric',
- * day: 'numeric',
- * hour: 'numeric',
- * })
- * //=> 10/4/2019, 12 PM
- */
- /**
- * @param date - The date to format
- * @param formatOptions - The format options
- * @param localeOptions - An object with locale
- *
- * @returns The formatted date string
- *
- * @throws `date` must not be Invalid Date
- *
- * @example
- * // Represent 4 October 2019 in German.
- * // Convert the date with format's options and locale's options.
- * const result = intlFormat(new Date(2019, 9, 4, 12, 30, 13, 456), {
- * weekday: 'long',
- * year: 'numeric',
- * month: 'long',
- * day: 'numeric',
- * }, {
- * locale: 'de-DE',
- * })
- * //=> Freitag, 4. Oktober 2019
- */
- export function intlFormat(date, formatOrLocale, localeOptions) {
- let formatOptions;
- if (isFormatOptions(formatOrLocale)) {
- formatOptions = formatOrLocale;
- } else {
- localeOptions = formatOrLocale;
- }
- return new Intl.DateTimeFormat(localeOptions?.locale, formatOptions).format(
- toDate(date),
- );
- }
- function isFormatOptions(opts) {
- return opts !== undefined && !("locale" in opts);
- }
- // Fallback for modularized imports:
- export default intlFormat;
|