Files
admin/packages/services/intl-date
..
2026-06-25 15:53:49 +03:00
2026-06-25 15:53:49 +03:00
2026-07-17 11:54:26 +03:00
2026-07-17 11:54:26 +03:00
2026-06-25 15:53:49 +03:00
2026-06-25 15:53:49 +03:00

← @crux-kit/intl-date

Конфігурація форматів дат, парсинг, форматування

Як використовувати

Ініціалізація сервісу

import { intlDateService, EN_LOCALE, UK_LOCALE } from '@crux-kit/intl-date';
export const IntlDate = intlDateService(
  {
    localeMap: {
      en: {
        code: "enUS",
        locale: EN_LOCALE,
        displayFormats: {
          DATE: 'yyyy-MM-dd',
          ...
        }
      },
      uk: {
        code: "uk",
        locale: UK_LOCALE,
      },
    },
    language: "uk",
  },
  console
);
  1. localeMap - Налаштовує локалі
    /*
        код береться з бібліотеки date-fns
        import { enUS } from "date-fns/locale";
        code: enUS.code
    */
    code: "enUS",
    /*
        locale береться з бібліотеки date-fns
        import { enUS } from "date-fns/locale";
        locale: enUS
    */
    locale: EN_LOCALE,
    /*
        displayFormats перезаписує дефолтні формати відображення дати для конкретної мови
    */
    displayFormats: {
        DATE: 'yyyy-MM-dd',
        ...
    }
  1. language - дефолтна мова

  2. displayFormat - базовий формат відображення дати. Можна перезаписувати лише окремі поля

export default {
  DAY_WITH_STRING_MONTH: 'dd MMMM',
  DAY_WITH_STRING_SHORT_MONTH: 'dd MMM',
  DATE: 'dd.MM.yyyy',
  DATE_WITH_STRING_SHORT_MONTH: 'dd MMM yyyy',
  DATE_WITH_STRING_MONTH: 'dd MMMM yyyy',
  DATE_TIME: 'dd.MM.yyyy hh:mm a',
  DATE_TIME_WITH_SECONDS: 'dd.MM.yyyy HH:mm:ss',
  DATE_TIME_WITH_STRING_MONTH: 'dd MMMM yyyy HH:mm',
  DATE_TIME_WITH_STRING_MONTH_WITH_SECONDS: 'dd MMMM yyyy HH:mm:ss',
  DATE_TIME_WITH_STRING_SHORT_MONTH: 'dd MMM yyyy HH:mm',
  DATE_TIME_WITH_STRING_SHORT_MONTH_WITH_SECONDS: 'dd MMM yyyy HH:mm:ss',
  TIME: 'HH:mm',
  TIME_WITH_SECONDS: 'HH:mm:ss',
  YEAR: 'yyyy',
  HOURS: 'HH',
  SHORT_HOURS: 'H',
  MINUTES: 'mm',
  SHORT_MINUTES: 'm',
  UNIVERSAL_ISO: 'UNIVERSAL_ISO',
};
  1. sourceFormat - базові формати, що використовуються при парсингу зовнішніх даних API, form values і тд
export default {
  DATE: 'yyyy-MM-dd',
  UNIVERSAL_ISO: 'UNIVERSAL_ISO',
  TIME: 'HH:mm',
  TIME_WITH_SECONDS: 'HH:mm:ss',
  DATE_TIME: 'yyyy-MM-dd HH:mm',
  DATE_TIME_WITH_SECONDS: 'yyyy-MM-dd HH:mm:ss',
  MINUTES_WITH_SECONDS: 'mm:ss',
};

Форматування дати

const date = '2025-11-27T13:17:02.174Z';

// "27 листопада 2025 13:17:02"
IntlDate.parseSource(date, 'UNIVERSAL_ISO').formatToDisplay('DATE_TIME_WITH_STRING_MONTH_WITH_SECONDS');

// "27 листопада 2025 15:17:02"
IntlDate.parseSource(date, 'UNIVERSAL_ISO').formatToDisplay('DATE_TIME_WITH_STRING_MONTH_WITH_SECONDS', { displayLocal: true });

Зміна мови

IntlDate.setLocaleGlobally('en');

Усі формати дати після цього підуть по новій локалі. Потрібно щоб локаль була у localeMap!!!

Додаткові можливості

Мутація дати

додати/відняти дату/час від поточної дати

const display = IntlDate.parseSource(date, 'UNIVERSAL_ISO')
  .subtract(2, 'years')
  .add(2, 'days')
  .formatToDisplay('DATE_TIME_WITH_STRING_MONTH_WITH_SECONDS', {
    displayLocal: true,
  });

type ManipulateUnit = 'years' | 'months' | 'weeks' | 'days' | 'hours' | 'minutes' | 'seconds';

Мова

Попередньо налаштовані Укранська, Польська, Англійська мови

import { EN_LOCALE_CONFIG, UK_LOCALE_CONFIG, PL_LOCALE_CONFIG } from '@crux-kit/intl-date';