dateUtils.ts 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. // eslint-disable-next-line import/no-duplicates
  2. import { format } from 'date-fns'
  3. // eslint-disable-next-line import/no-duplicates
  4. import { enUS, fr } from 'date-fns/locale'
  5. import ArrayUtils from '~/services/utils/arrayUtils'
  6. export const enum supportedLocales {
  7. FR = 'fr',
  8. EN = 'en',
  9. }
  10. const defaultLocale = 'fr'
  11. export default class DateUtils {
  12. public static format(date: Date, fmt: string): string {
  13. return format(date, fmt)
  14. }
  15. /**
  16. * Formate la ou les dates au format donné et retourne la liste concaténée
  17. *
  18. * @param dates
  19. * @param fmt
  20. * @param sep
  21. */
  22. public static formatAndConcat(
  23. dates: Date | Array<Date>,
  24. fmt: string,
  25. sep: string = ' - ',
  26. ): string {
  27. dates = Array.isArray(dates) ? dates : [dates]
  28. return dates.map((d) => this.format(d, fmt)).join(sep)
  29. }
  30. /**
  31. * Trie les dates par ordre chronologique
  32. *
  33. * @param dates
  34. * @param reverse
  35. */
  36. public static sort(
  37. dates: Array<Date>,
  38. reverse: boolean = false,
  39. ): Array<Date> {
  40. return ArrayUtils.sort(dates, reverse) as Array<Date>
  41. }
  42. public static getFnsLocale(code: supportedLocales): Locale {
  43. // noinspection TypeScriptUnresolvedReference
  44. const mapping = {
  45. en: enUS,
  46. fr,
  47. }
  48. return mapping[code] ?? mapping[defaultLocale]
  49. }
  50. public static getShortFormatPattern(code: supportedLocales): string {
  51. const mapping = {
  52. en: 'MM/dd/yyyy',
  53. fr: 'dd/MM/yyyy',
  54. }
  55. return mapping[code] ?? mapping[defaultLocale]
  56. }
  57. public static getFormatPattern(code: supportedLocales): string {
  58. const mapping = {
  59. en: 'MM/dd/yyyy HH:mm',
  60. fr: 'dd/MM/yyyy HH:mm',
  61. }
  62. return mapping[code] ?? mapping[defaultLocale]
  63. }
  64. public static formatIsoShortDate(date: Date): string {
  65. return format(date, 'yyyy-MM-dd')
  66. }
  67. }