Files
admin/packages/services/intl-date/Readme.md
T
2026-06-25 15:53:49 +03:00

144 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# [←](../../../docs/README.md) @crux-kit/intl-date
Конфігурація форматів дат, парсинг, форматування
## Як використовувати
### Ініціалізація сервісу
```ts
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` - Налаштовує локалі
```ts
/*
код береться з бібліотеки 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',
...
}
```
2. `language` - дефолтна мова
3. `displayFormat` - базовий формат відображення дати. Можна перезаписувати лише окремі поля
```ts
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',
};
```
4. `sourceFormat` - базові формати, що використовуються при парсингу зовнішніх даних API, form values і тд
```ts
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',
};
```
### Форматування дати
```ts
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 });
```
### Зміна мови
```ts
IntlDate.setLocaleGlobally('en');
```
Усі формати дати після цього підуть по новій локалі.
Потрібно щоб локаль була у `localeMap`!!!
### Додаткові можливості
#### Мутація дати
додати/відняти дату/час від поточної дати
```ts
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';
```
#### Мова
Попередньо налаштовані Укранська, Польська, Англійська мови
```ts
import { EN_LOCALE_CONFIG, UK_LOCALE_CONFIG, PL_LOCALE_CONFIG } from '@crux-kit/intl-date';
```