Форматирование дат и числовых значений играет ключевую роль в пользовательских интерфейсах. Корректное отображение временных данных и чисел повышает читаемость информации, снижает вероятность ошибок восприятия и обеспечивает соответствие локальным стандартам.
В экосистеме Ant Design форматирование дат и чисел реализуется за счёт комбинации встроенных компонентов интерфейса, систем локализации и внешних библиотек.
Компоненты Ant Design, работающие с датами, используют специализированные библиотеки для обработки временных значений. В современных версиях Ant Design по умолчанию применяется библиотека Day.js, которая пришла на смену Moment.js.
Day.js обеспечивает:
Форматирование даты осуществляется при помощи шаблонов. Каждый символ шаблона соответствует определённой части даты.
Наиболее распространённые шаблоны:
| Шаблон | Значение | Пример |
|---|---|---|
| YYYY | год | 2026 |
| YY | короткий год | 26 |
| MM | номер месяца | 03 |
| MMM | сокращённое название месяца | Mar |
| MMMM | полное название месяца | March |
| DD | день месяца | 14 |
| HH | часы (24) | 18 |
| hh | часы (12) | 06 |
| mm | минуты | 45 |
| ss | секунды | 09 |
Пример форматирования:
import dayjs from "dayjs"
const formatted = dayjs().format("YYYY-MM-DD")
Результат:
2026-03-14
Компонент DatePicker поддерживает настройку формата
отображения даты через свойство format.
import { DatePicker } from "antd"
<DatePicker format="DD.MM.YYYY" />
В интерфейсе значение будет отображаться следующим образом:
14.03.2026
Это свойство влияет только на представление даты, но внутренне компонент продолжает работать с объектом Day.js.
Для отображения времени используется компонент
DatePicker с параметром showTime.
<DatePicker
showTime
format="DD.MM.YYYY HH:mm"
/>
Пример отображения:
14.03.2026 18:45
Компонент TimePicker предназначен исключительно для
выбора времени и также поддерживает форматирование.
import { TimePicker } from "antd"
<TimePicker format="HH:mm:ss" />
Пример результата:
18:45:09
Можно использовать укороченные форматы:
<TimePicker format="HH:mm" />
После выбора даты компонент возвращает объект Day.js. Для получения
строки используется метод format.
const handleChange = (date) => {
const value = date.format("YYYY-MM-DD")
console.log(value)
}
Пример результата:
2026-03-14
Формат отображения дат зависит от локали. Ant Design поддерживает
систему локализации через компонент ConfigProvider.
import { ConfigProvider } from "antd"
import ruRU from "antd/locale/ru_RU"
<ConfigProvider locale={ruRU}>
<DatePicker />
</ConfigProvider>
После установки русской локали:
Компонент RangePicker позволяет выбирать диапазон
дат.
import { DatePicker } from "antd"
const { RangePicker } = DatePicker
<RangePicker format="DD.MM.YYYY" />
Результат выбора:
01.03.2026 — 14.03.2026
Полученные значения представляют собой массив объектов Day.js.
Иногда требуется отображать дату в нестандартном виде, например:
14 марта 2026
Реализация:
dayjs().format("D MMMM YYYY")
Для корректного отображения требуется подключение локали:
import "dayjs/locale/ru"
dayjs.locale("ru")
Числовые значения в пользовательских интерфейсах требуют:
Ant Design предоставляет несколько инструментов для форматирования чисел.
InputNumber — основной компонент для ввода и отображения
числовых значений.
import { InputNumber } from "antd"
<InputNumber min={0} max={100} />
Компонент автоматически:
Свойство precision задаёт количество знаков после
запятой.
<InputNumber precision={2} />
Пример значения:
15.34
Для улучшения читаемости больших чисел используется свойство
formatter.
<InputNumber
formatter={(value) =>
`${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
}
/>
Результат:
1000000 → 1,000,000
Если используется formatter, необходимо также определить
parser, который удаляет форматирование перед обработкой
значения.
<InputNumber
formatter={(value) =>
`${value}`.replace(/\B(?=(\d{3})+(?!\d))/g, ",")
}
parser={(value) =>
value.replace(/,/g, "")
}
/>
Это позволяет корректно преобразовать строку обратно в число.
Для отображения валютных значений используется сочетание
formatter и parser.
<InputNumber
formatter={(value) => `$ ${value}`}
parser={(value) => value.replace(/\$\s?|(,*)/g, "")}
/>
Результат:
$ 1500
Современный стандарт JavaScript для форматирования чисел — API
Intl.NumberFormat.
Пример форматирования:
const formatter = new Intl.NumberFormat("ru-RU")
formatter.format(1000000)
Результат:
1 000 000
const currency = new Intl.NumberFormat("ru-RU", {
style: "currency",
currency: "RUB"
})
currency.format(2500)
Результат:
2 500 ₽
Часто числа отображаются внутри компонента Table.
Форматирование выполняется через функцию render.
const columns = [
{
title: "Цена",
dataIndex: "price",
render: (value) =>
new Intl.NumberFormat("ru-RU", {
style: "currency",
currency: "RUB"
}).format(value)
}
]
Это позволяет обеспечить единый формат отображения данных.
Процентные значения также можно форматировать через
Intl.NumberFormat.
const percent = new Intl.NumberFormat("ru-RU", {
style: "percent",
minimumFractionDigits: 2
})
percent.format(0.45)
Результат:
45,00 %
InputNumber поддерживает контроль минимального и
максимального значения.
<InputNumber
min={0}
max={1000}
/>
Дополнительно можно задать шаг изменения.
<InputNumber step={0.5} />
Каждое нажатие кнопок увеличения или уменьшения изменяет значение на указанную величину.
При выводе чисел вне элементов ввода рекомендуется использовать централизованные функции форматирования.
Пример утилиты:
export const formatNumber = (value) => {
return new Intl.NumberFormat("ru-RU").format(value)
}
Использование:
formatNumber(1200000)
Результат:
1 200 000
Для повторного использования можно создать универсальный форматтер.
export const formatCurrency = (value) => {
return new Intl.NumberFormat("ru-RU", {
style: "currency",
currency: "RUB"
}).format(value)
}
Пример использования:
formatCurrency(5500)
Результат:
5 500 ₽
Чаще всего форматирование дат и чисел используется совместно в таблицах, карточках и формах.
Пример колонок таблицы:
const columns = [
{
title: "Дата",
dataIndex: "date",
render: (value) => dayjs(value).format("DD.MM.YYYY")
},
{
title: "Сумма",
dataIndex: "amount",
render: (value) =>
new Intl.NumberFormat("ru-RU", {
style: "currency",
currency: "RUB"
}).format(value)
}
]
В интерфейсе это будет выглядеть следующим образом:
| Дата | Сумма |
|---|---|
| 14.03.2026 | 5 000 ₽ |
Единый формат дат
Во всём приложении рекомендуется использовать одинаковый шаблон, например:
DD.MM.YYYY
Это предотвращает путаницу между форматами:
03/04/2026
которые могут интерпретироваться по-разному.
Централизованные функции форматирования
Форматирование лучше выносить в отдельные утилиты:
utils/formatDate.js
utils/formatCurrency.js
Это:
Использование локали
Если приложение поддерживает несколько языков, форматирование должно быть связано с локалью пользователя.
Дата:
14.03.2026
Английская локаль:
03/14/2026
Числа:
1 000 000
или
1,000,000
Отделение логики от представления
Внутри бизнес-логики рекомендуется хранить:
2026-03-14)Форматирование должно выполняться только на уровне интерфейса.