UNPKG

react-datetime-picker

Version:

A date range picker for your React app.

38 lines (37 loc) 1.61 kB
import getUserLocale from 'get-user-locale'; const formatterCache = new Map(); export function getFormatter(options) { return function formatter(locale, date) { const localeWithDefault = locale || getUserLocale(); if (!formatterCache.has(localeWithDefault)) { formatterCache.set(localeWithDefault, new Map()); } const formatterCacheLocale = formatterCache.get(localeWithDefault); if (!formatterCacheLocale.has(options)) { const formatter = new Intl.DateTimeFormat(localeWithDefault || undefined, options); formatterCacheLocale.set(options, formatter.format.bind(formatter)); } return formatterCacheLocale.get(options)(date); }; } const numberFormatterCache = new Map(); export function getNumberFormatter(options) { return (locale, number) => { const localeWithDefault = locale || getUserLocale(); if (!numberFormatterCache.has(localeWithDefault)) { numberFormatterCache.set(localeWithDefault, new Map()); } const numberFormatterCacheLocale = numberFormatterCache.get(localeWithDefault); if (!numberFormatterCacheLocale.has(options)) { const formatter = new Intl.NumberFormat(localeWithDefault || undefined, options); numberFormatterCacheLocale.set(options, formatter.format.bind(formatter)); } return numberFormatterCacheLocale.get(options)(number); }; } const formatDateOptions = { day: 'numeric', month: 'numeric', year: 'numeric', }; export const formatDate = getFormatter(formatDateOptions);