import { format } from 'date-fns'; import ArrayUtils from "~/services/utils/arrayUtils"; import { enUS, fr } from 'date-fns/locale' export const enum supportedLocales { FR = 'fr', EN = 'en' } const defaultLocale = 'fr' export default class DateUtils { public static format(date: Date, fmt: string): string { return format(date, fmt) } /** * Formate la ou les dates au format donné et retourne la liste concaténée * * @param dates * @param fmt * @param sep */ public static formatAndConcat (dates: Date | Array, fmt: string, sep: string = ' - '): string { dates = Array.isArray(dates) ? dates : [dates] return dates.map((d) => this.format(d, fmt)).join(sep) } /** * Trie les dates par ordre chronologique * * @param dates * @param reverse */ public static sort(dates: Array, reverse: boolean = false): Array { return ArrayUtils.sort(dates, reverse) as Array } public static getFnsLocale(code: supportedLocales): Locale { const mapping = { 'en': enUS, 'fr' : fr } return mapping[code] ?? mapping[defaultLocale] } public static getShortFormatPattern(code: supportedLocales): string { const mapping = { 'en': 'MM/dd/yyyy', 'fr': 'dd/MM/yyyy' } return mapping[code] ?? mapping[defaultLocale] } public static getFormatPattern(code: supportedLocales): string { const mapping = { 'en': 'MM/dd/yyyy HH:mm', 'fr': 'dd/MM/yyyy HH:mm' } return mapping[code] ?? mapping[defaultLocale] } public static formatIsoShortDate(date: Date): string { return format(date, 'yyyy-MM-dd') } }