Компонент DatePicker в библиотеке Ant Design предоставляет мощный и гибкий инструмент для выбора даты в веб-приложениях на JavaScript. Он поддерживает как выбор одной даты, так и интеграцию с формами, валидацию и настройку формата отображения. Основные возможности включают локализацию, ограничения выбора и кастомизацию элементов календаря.
Для использования DatePicker необходимо импортировать компонент:
import { DatePicker } from 'antd';
Простейший пример использования:
<DatePicker />
При этом на странице появится стандартный календарь, где можно выбрать дату. Выбранное значение возвращается как объект Moment из библиотеки moment.js (или dayjs, если настроена замена).
Для изменения формата отображения используется проп
format:
<DatePicker format="DD.MM.YYYY" />
Поддерживаются следующие шаблоны:
YYYY – год в 4 цифрыMM – месяц с ведущим нулемDD – день с ведущим нулемHH:mm:ss – для отображения времени, если включён
TimePickerDatePicker поддерживает контролируемый режим с использованием состояния React:
const [date, setDate] = useState(null);
<DatePicker
value={date}
onCha nge={(value) => setDate(value)}
/>
Здесь value задаёт текущее значение, а
onChange получает новый объект даты при выборе
пользователем.
Для ограничения диапазона выбора используются свойства
disabledDate и disabledTime:
<DatePicker
disabledDate={(current) => current && current < moment().startOf('day')}
/>
В данном примере запрещено выбирать даты до сегодняшнего дня.
Компонент легко интегрируется с Form.Item из Ant
Design:
<Form.Item
name="birthday"
label="Дата рождения"
rules={[{ required: true, message: 'Пожалуйста, выберите дату!' }]}
>
<DatePicker />
</Form.Item>
При этом валидация и работа с формой происходят автоматически.
RangePicker — это расширение DatePicker, позволяющее выбирать диапазон дат. Он полезен для фильтров, отчётов и планирования событий.
import { DatePicker } from 'antd';
const { RangePicker } = DatePicker;
<RangePicker />
По умолчанию отображаются два календаря, позволяющие выбрать начальную и конечную дату диапазона.
Для изменения формата и символа между датами:
<RangePicker
format="DD/MM/YYYY"
separator="по"
/>
Вывод будет, например: 01/03/2026 по 14/03/2026.
Для ограничения выбора используется проп
disabledDate:
<RangePicker
disabledDate={(current) => current && current > moment().endOf('month')}
/>
Можно комбинировать условия, запрещая выбор дат до определённого момента и после текущего месяца.
RangePicker поддерживает выбор времени с помощью
showTime:
<RangePicker
showTime={{ format: 'HH:mm' }}
format="DD.MM.YYYY HH:mm"
/>
В этом режиме можно выбирать не только дату, но и точное время для каждой точки диапазона.
const [range, setRange] = useState([]);
<RangePicker
value={range}
onCha nge={(dates) => setRange(dates)}
/>
Здесь dates — массив из двух объектов Moment,
представляющих начальную и конечную даты.
<Form.Item
name="period"
label="Период"
rules={[{ required: true, message: 'Выберите диапазон дат!' }]}
>
<RangePicker />
</Form.Item>
Автоматическая валидация и обработка формы упрощает работу с RangePicker в сложных интерфейсах.
locale можно
изменить язык календаря, формат отображения дней недели и месяцев:import ruRU from 'antd/locale/ru_RU';
<DatePicker locale={ruRU} />
ranges:<RangePicker
ranges={{
'Сегодня': [moment(), moment()],
'Последние 7 дней': [moment().subtract(6, 'days'), moment()]
}}
/>
Фильтрация дат С помощью
disabledDate и disabledTime можно гибко
блокировать отдельные дни и часы.
Стилизация Все элементы DatePicker можно
стилизовать через CSS-классы Ant Design или style
проп:
<DatePicker style={{ width: 250, borderRadius: 4 }} />
События Помимо onChange, доступны
события:
onOpenChange – открытие/закрытие календаряonPanelChange – изменение месяца, года или
десятилетияonOk – подтверждение даты при включённом
TimePickerForm.Item.disabledDate,
disabledTime) повышают UX, предотвращая ошибки
пользователя.ranges) ускоряют работу с
повторяющимися выборками дат.DatePicker и RangePicker обеспечивают мощный набор возможностей для работы с датами и временем, позволяя создавать как простые формы, так и сложные фильтры и планировщики.