DatePicker
가져오기import{ DatePicker }from"antd"; |
가져오기import{ DatePicker }from"antd"; |
By clicking the input box, you can select a date from a popup calendar.
Common props ref:Common props
There are five kinds of picker:
The default locale is en-US, if you need to use other languages, recommend to use internationalized components provided by us at the entrance. Look at: ConfigProvider.
If there are special needs (only modifying single component language), Please use the property: local. Example: default.
// The default locale is en-US, if you want to use other locale, just set locale in entry file globally.// Make sure you import the relevant dayjs file as well, otherwise the locale won't change for all texts (e.g. range picker months)import locale from 'antd/locale/zh_CN';import dayjs from 'dayjs';import 'dayjs/locale/zh-cn';dayjs.locale('zh-cn');<ConfigProvider locale={locale}><DatePicker defaultValue={dayjs('2015-01-01', 'YYYY-MM-DD')} /></ConfigProvider>;
When use with Next.js App Router, make sure to add 'use client'
before import locale file of dayjs. It's because all components of Ant Design only works in client, importing locale in RSC will not work.
The following APIs are shared by DatePicker, RangePicker.
Property | Description | Type | Default | Version |
---|---|---|---|---|
allowClear | Customize clear button | boolean | { clearIcon?: ReactNode } | true | 5.8.0: Support object type |
autoFocus | If get focus when component mounted | boolean | false | |
className | The picker className | string | - | |
dateRender | Custom rendering function for date cells, >= 5.4.0 use cellRender instead. | function(currentDate: dayjs, today: dayjs) => React.ReactNode | - | < 5.4.0 |
cellRender | Custom rendering function for picker cells | (current: dayjs, info: { originNode: React.ReactElement,today: DateType, range?: 'start' | 'end', type: PanelMode, locale?: Locale, subType?: 'hour' | 'minute' | 'second' | 'meridiem' }) => React.ReactNode | - | 5.4.0 |
components | Custom panels | Record<Panel | 'input', React.ComponentType> | - | 5.14.0 |
disabled | Determine whether the DatePicker is disabled | boolean | false | |
disabledDate | Specify the date that cannot be selected | (currentDate: dayjs, info: { from?: dayjs, type: Picker }) => boolean | - | info : 5.14.0 |
format | To set the date format, support multi-format matching when it is an array, display the first one shall prevail. refer to dayjs#format. for example: Custom Format | formatType | rc-picker | |
order | Auto order date when multiple or range selection | boolean | true | 5.14.0 |
popupClassName | To customize the className of the popup calendar | string | - | 4.23.0 |
preserveInvalidOnBlur | Not clean input on blur even when the typing is invalidate | boolean | false | 5.14.0 |
getPopupContainer | To set the container of the floating layer, while the default is to create a div element in body | function(trigger) | - | |
inputReadOnly | Set the readonly attribute of the input tag (avoids virtual keyboard on touch devices) | boolean | false | |
locale | Localization configuration | object | default | |
minDate | The minimum date, which also limits the range of panel switching | dayjs | - | 5.14.0 |
maxDate | The maximum date, which also limits the range of panel switching | dayjs | - | 5.14.0 |
mode | The picker panel mode( Cannot select year or month anymore? ) | time | date | month | year | decade | - | |
needConfirm | Need click confirm button to trigger value change. Default false when multiple | boolean | - | 5.14.0 |
nextIcon | The custom next icon | ReactNode | - | 4.17.0 |
open | The open state of picker | boolean | - | |
panelRender | Customize panel render | (panelNode) => ReactNode | - | 4.5.0 |
picker | Set picker type | date | week | month | quarter | year | date | quarter : 4.1.0 |
placeholder | The placeholder of date input | string | [string,string] | - | |
placement | The position where the selection box pops up | bottomLeft bottomRight topLeft topRight | bottomLeft | |
popupStyle | To customize the style of the popup calendar | CSSProperties | {} | |
presets | The preset ranges for quick selection, Since 5.8.0 , preset value supports callback function. | { label: React.ReactNode, value: Dayjs | (() => Dayjs) }[] | - | |
prevIcon | The custom prev icon | ReactNode | - | 4.17.0 |
size | To determine the size of the input box, the height of large and small , are 40px and 24px respectively, while default size is 32px | large | middle | small | - | |
status | Set validation status | 'error' | 'warning' | - | 4.19.0 |
style | To customize the style of the input box | CSSProperties | {} | |
suffixIcon | The custom suffix icon | ReactNode | - | |
superNextIcon | The custom super next icon | ReactNode | - | 4.17.0 |
superPrevIcon | The custom super prev icon | ReactNode | - | 4.17.0 |
variant | Variants of picker | outlined | borderless | filled | outlined | 5.13.0 |
onOpenChange | Callback function, can be executed whether the popup calendar is popped up or closed | function(open) | - | |
onPanelChange | Callback when picker panel mode is changed | function(value, mode) | - |
Name | Description | Version |
---|---|---|
blur() | Remove focus | |
focus() | Get focus |
Property | Description | Type | Default | Version |
---|---|---|---|---|
defaultPickerValue | Default panel date, will be reset when panel open | dayjs | - | 5.14.0 |
defaultValue | To set default date, if start time or end time is null or undefined, the date range will be an open interval | dayjs | - | |
disabledTime | To specify the time that cannot be selected | function(date) | - | |
format | To set the date format. refer to dayjs#format | formatType | YYYY-MM-DD | |
multiple | Enable multiple selection. Not support showTime | boolean | false | 5.14.0 |
pickerValue | Panel date. Used for controlled switching of panel date. Work with onPanelChange | dayjs | - | 5.14.0 |
renderExtraFooter | Render extra footer in panel | (mode) => React.ReactNode | - | |
showNow | Show the fast access of current datetime | boolean | - | 4.4.0 |
showTime | To provide an additional time selection | object | boolean | TimePicker Options | |
showTime.defaultValue | To set default time of selected date, demo | dayjs | dayjs() | |
showWeek | Show week info when in DatePicker | boolean | false | 5.14.0 |
value | To set date | dayjs | - | |
onChange | Callback function, can be executed when the selected time is changing | function(date: dayjs, dateString: string) | - | |
onOk | Callback when click ok button | function() | - | |
onPanelChange | Callback function for panel changing | function(value, mode) | - |
Property | Description | Type | Default | Version |
---|---|---|---|---|
defaultValue | To set default date | dayjs | - | |
format | To set the date format. refer to dayjs#format | formatType | YYYY | |
multiple | Enable multiple selection | boolean | false | 5.14.0 |
renderExtraFooter | Render extra footer in panel | () => React.ReactNode | - | |
value | To set date | dayjs | - | |
onChange | Callback function, can be executed when the selected time is changing | function(date: dayjs, dateString: string) | - |
Added in 4.1.0
.
Property | Description | Type | Default | Version |
---|---|---|---|---|
defaultValue | To set default date | dayjs | - | |
format | To set the date format. refer to dayjs#format | formatType | YYYY-\QQ | |
multiple | Enable multiple selection | boolean | false | 5.14.0 |
renderExtraFooter | Render extra footer in panel | () => React.ReactNode | - | |
value | To set date | dayjs | - | |
onChange | Callback function, can be executed when the selected time is changing | function(date: dayjs, dateString: string) | - |
Property | Description | Type | Default | Version |
---|---|---|---|---|
defaultValue | To set default date | dayjs | - | |
format | To set the date format. refer to dayjs#format | formatType | YYYY-MM | |
multiple | Enable multiple selection | boolean | false | 5.14.0 |
renderExtraFooter | Render extra footer in panel | () => React.ReactNode | - | |
value | To set date | dayjs | - | |
onChange | Callback function, can be executed when the selected time is changing | function(date: dayjs, dateString: string) | - |
Property | Description | Type | Default | Version |
---|---|---|---|---|
defaultValue | To set default date | dayjs | - | |
format | To set the date format. refer to dayjs#format | formatType | YYYY-wo | |
multiple | Enable multiple selection | boolean | false | 5.14.0 |
renderExtraFooter | Render extra footer in panel | (mode) => React.ReactNode | - | |
value | To set date | dayjs | - | |
onChange | Callback function, can be executed when the selected time is changing | function(date: dayjs, dateString: string) | - |
Property | Description | Type | Default | Version |
---|---|---|---|---|
allowEmpty | Allow start or end input leave empty | [boolean, boolean] | [false, false] | |
cellRender | Custom rendering function for picker cells | (current: dayjs, info: { originNode: React.ReactElement,today: DateType, range?: 'start' | 'end', type: PanelMode, locale?: Locale, subType?: 'hour' | 'minute' | 'second' | 'meridiem' }) => React.ReactNode | - | 5.4.0 |
dateRender | Custom rendering function for date cells, >= 5.4.0 use cellRender instead. | function(currentDate: dayjs, today: dayjs) => React.ReactNode | - | < 5.4.0 |
defaultPickerValue | Default panel date, will be reset when panel open | dayjs | - | 5.14.0 |
defaultValue | To set default date | [dayjs, dayjs] | - | |
disabled | If disable start or end | [boolean, boolean] | - | |
disabledTime | To specify the time that cannot be selected | function(date: dayjs, partial: start | end , info: { from?: dayjs }) | - | info.from : 5.17.0 |
format | To set the date format. refer to dayjs#format | formatType | YYYY-MM-DD HH:mm:ss | |
id | Config input ids | { start?: string, end?: string } | - | 5.14.0 |
pickerValue | Panel date. Used for controlled switching of panel date. Work with onPanelChange | dayjs | - | 5.14.0 |
presets | The preset ranges for quick selection, Since 5.8.0 , preset value supports callback function. | { label: React.ReactNode, value: (Dayjs | (() => Dayjs))[] }[] | - | |
renderExtraFooter | Render extra footer in panel | () => React.ReactNode | - | |
separator | Set separator between inputs | React.ReactNode | <SwapRightOutlined /> | |
showTime | To provide an additional time selection | object | boolean | TimePicker Options | |
showTime.defaultValue | To set default time of selected date, demo | dayjs[] | [dayjs(), dayjs()] | |
value | To set date | [dayjs, dayjs] | - | |
onCalendarChange | Callback function, can be executed when the start time or the end time of the range is changing. info argument is added in 4.4.0 | function(dates: [dayjs, dayjs], dateStrings: [string, string], info: { range:start |end }) | - | |
onChange | Callback function, can be executed when the selected time is changing | function(dates: [dayjs, dayjs], dateStrings: [string, string]) | - | |
onFocus | Trigger when get focus | function(event, { range: 'start' | 'end' }) | - | range : 5.14.0 |
onBlur | Trigger when lose focus | function(event, { range: 'start' | 'end' }) | - | range : 5.14.0 |
import type { Dayjs } from 'dayjs';type Generic = string;type GenericFn = (value: Dayjs) => string;export type FormatType =| Generic| GenericFn| Array<Generic | GenericFn>| {format: string;type?: 'mask';};
Note: type
is added in 5.14.0
.
토큰 이름 | 설명 | 타입 | 기본값 |
---|---|---|---|
activeBg | 输入框激活状态时背景颜色 | string | #ffffff |
activeBorderColor | 激活态边框色 | string | #1677ff |
activeShadow | 激活态阴影 | string | 0 0 0 2px rgba(5, 145, 255, 0.1) |
addonBg | 前/后置标签背景色 | string | rgba(0, 0, 0, 0.02) |
cellActiveWithRangeBg | 选取范围内的单元格背景色 | string | #e6f4ff |
cellBgDisabled | 单元格禁用态背景色 | string | rgba(0, 0, 0, 0.04) |
cellHeight | 单元格高度 | number | 24 |
cellHoverBg | 单元格悬浮态背景色 | string | rgba(0, 0, 0, 0.04) |
cellHoverWithRangeBg | 选取范围内的单元格悬浮态背景色 | string | #c8dfff |
cellRangeBorderColor | 选取范围时单元格边框色 | string | #7cb3ff |
cellWidth | 单元格宽度 | number | 36 |
errorActiveShadow | 错误状态时激活态阴影 | string | 0 0 0 2px rgba(255, 38, 5, 0.06) |
hoverBg | 输入框hover状态时背景颜色 | string | #ffffff |
hoverBorderColor | 悬浮态边框色 | string | #4096ff |
inputFontSize | 字体大小 | number | 14 |
inputFontSizeLG | 大号字体大小 | number | 16 |
inputFontSizeSM | 小号字体大小 | number | 14 |
multipleItemBg | 다중 선택 태그의 배경색 | string | rgba(0, 0, 0, 0.06) |
multipleItemBorderColor | 다중 선택 태그의 테두리 색상 | string | transparent |
multipleItemBorderColorDisabled | 비활성화된 경우 다중 선택 태그의 테두리 색상 | string | transparent |
multipleItemColorDisabled | 비활성화된 경우 다중 선택 태그의 텍스트 색상 | string | rgba(0, 0, 0, 0.25) |
multipleItemHeight | 다중 선택 태그의 높이 | number | 24 |
multipleItemHeightLG | 큰 크기의 다중 선택 태그의 높이 | number | 32 |
multipleItemHeightSM | 작은 크기의 다중 선택 태그의 높이 | number | 16 |
multipleSelectorBgDisabled | 비활성화된 경우 다중 선택기의 배경색 | string | rgba(0, 0, 0, 0.04) |
paddingBlock | 输入框纵向内边距 | number | 4 |
paddingBlockLG | 大号输入框纵向内边距 | number | 7 |
paddingBlockSM | 小号输入框纵向内边距 | number | 0 |
paddingInline | 输入框横向内边距 | number | 11 |
paddingInlineLG | 大号输入框横向内边距 | number | 11 |
paddingInlineSM | 小号输入框横向内边距 | number | 7 |
presetsMaxWidth | 预设区域最大宽度 | number | 200 |
presetsWidth | 预设区域宽度 | number | 120 |
textHeight | 单元格文本高度 | number | 40 |
timeCellHeight | 时间单元格高度 | number | 28 |
timeColumnHeight | 时间列高度 | number | 224 |
timeColumnWidth | 时间列宽度 | number | 56 |
warningActiveShadow | 警告状态时激活态阴影 | string | 0 0 0 2px rgba(255, 215, 5, 0.1) |
withoutTimeCellHeight | 十年/年/季/月/周单元格高度 | number | 66 |
zIndexPopup | 弹窗 z-index | number | 1050 |
Please refer FAQ
After selecting the year, the system directly switches to the date panel instead of month panel. This design is intended to reduce the user's operational burden by allowing them to complete the year modification with just one click, without having to enter the month selection interface again. At the same time, it also avoids additional cognitive burden of remembering the month.
Please refer Use custom date library
DatePicker default set locale
as en
in v4. You can config DatePicker locale
prop or ConfigProvider locale
prop instead.
See FAQ Date-related-components-locale-is-not-working?
Please use correct language (#5605), or update dayjs locale
config:
import dayjs from 'dayjs';import 'dayjs/locale/zh-cn';import updateLocale from 'dayjs/plugin/updateLocale';dayjs.extend(updateLocale);dayjs.updateLocale('zh-cn', {weekStart: 0,});
panelRender
?When you change the layout of nodes by panelRender
, React will unmount and re-mount it which reset the component state. You should keep the layout stable. Please ref #27263 for more info.
Please refer to the blog 'Why is it so hard to disable the date?', to learn how to use it.