Skip to main content

DatePicker 日期选择器

输入或选择日期的控件。

当用户需要输入一个日期,可以点击标准输入框,弹出日期面板进行选择。

引入​

import {DatePicker} from 'acud';
import moment from 'moment';

基本用法​

function App() {
const dateFormat = 'YYYY-MM-DD';
const [value, setValue] = useState(moment('2023-06-26', dateFormat));

const handleChange = (moment) => {
console.log(moment);
setValue(moment);
};

return (
<div className="acux-demo-column">
<h5>无默认值</h5>
<DatePicker />

<h5>有默认值(非受控)</h5>
<DatePicker defaultValue={value} />

<h5>有固定值(受控)</h5>
<DatePicker value={value} />

<h5>通用方法</h5>
<DatePicker value={value} onChange={handleChange} />
</div>
);
}

禁用状态​

<DatePicker disabled />

不同类型​

<div className="acux-demo-column">
<h5>time</h5>
<DatePicker picker='time' />

<h5>date</h5>
<DatePicker picker='date' />

<h5>month</h5>
<DatePicker picker='month' />

<h5>year</h5>
<DatePicker picker='year' />

<h5>decade</h5>
<DatePicker picker='decade' />

<h5>quarter</h5>
<DatePicker picker='quarter' />
</div>

不同状态​

<DatePicker status="error" />

隐藏面板​

<div className="acux-demo-column">
<DatePicker />
<DatePicker showToday={false} />
<DatePicker showTime />
<DatePicker showTime showNow={false} />
</div>

带时间的日期选择​

<DatePicker showTime />

范围选择器​

function App() {
const dateFormat = 'YYYY-MM-DD';

const {RangePicker} = DatePicker;

return (
<div className="acux-demo-column">
<RangePicker locale={locale} />
<RangePicker
locale={locale}
ranges={{
今天: [moment(), moment()],
'本月': [moment().startOf('month'), moment().endOf('month')]
}}
/>
<RangePicker locale={locale} showTime />
<RangePicker locale={locale} picker="month" />
<RangePicker locale={locale} picker='week' />
</div>
);
}

选择器汉化​

引入:

import locale from 'acud/es/date-picker/locale/zh_CN';

使用:

<div className="acux-demo-column">
<DatePicker />
<DatePicker locale={locale} />
</div>

国际化:

// 默认语言为 en-US,如果你需要设置其他语言,推荐在入口文件全局设置 locale
import moment from 'moment';
import 'moment/locale/zh-cn';
import locale from 'acud/lib/locale/zh_CN';

<ConfigProvider locale={locale}>
<DatePicker defaultValue={moment('2023-06-26', 'YYYY-MM-DD')} />
</ConfigProvider>;

API​

以下 API 为 DatePicker、 RangePicker 共享的 API。

参数说明类型默认值
allowClear是否显示清除按钮booleantrue
autoFocus自动获取焦点booleanfalse
bordered是否有边框booleantrue
className选择器 classNamestring--
dateRender自定义日期单元格的内容function(currentDate: moment, today: moment) => React.ReactNode--
disabled禁用booleanfalse
disabledDate不可选择的日期(currentDate: moment) => boolean--
dropdownClassName额外的弹出日历 classNamestring--
getPopupContainer定义浮层的容器,默认为 body 上新建 divfunction(trigger)--
inputReadOnly设置输入框为只读(避免在移动设备上打开虚拟键盘)booleanfalse
locale国际化配置object默认配置
mode日期面板的状态time〡date〡month〡year〡decade--
open控制弹层是否展开boolean--
panelRender自定义渲染面板(panelNode) => ReactNode--
picker设置选择器类型date〡week〡month〡quarter〡yeardate
placeholder输入框提示文字string〡[string, string]--
popupStyle额外的弹出日历样式CSSProperties{}
size输入框大小,large 高度为 40px,small 为 24px,默认是 32pxlarge〡middle〡small--
style自定义输入框样式CSSProperties{}
suffixIcon自定义的选择框后缀图标ReactNode--
onOpenChange弹出日历和关闭日历的回调function(open)--
onPanelChange日历面板切换的回调function(value, mode)--

共同的方法​

名称描述
blur()移除焦点
focus()获取焦点

DatePicker​

参数说明类型默认值
defaultPickerValue默认面板日期moment--
defaultValue默认日期,如果开始时间或结束时间为 null 或者 undefined,日期范围将是一个开区间moment--
disabledTime不可选择的时间function(date)--
format设置日期格式,为数组时支持多格式匹配,展示以第一个为准。配置参考 moment.js,支持自定义格式string〡(value: moment) => string〡(string〡(value: moment) => string)[]YYYY-MM-DD
renderExtraFooter在面板中添加额外的页脚(mode) => React.ReactNode--
showNow当设定了 showTime 的时候,面板是否显示“此刻”按钮boolean--
showTime增加时间选择功能Object〡boolean[TimePicker Options
showTime.defaultValue设置用户选择日期时默认的时分秒momentmoment()
showToday是否展示“今天”按钮booleantrue
value日期moment--
onChange时间发生变化的回调function(date: moment, dateString: string)--
onSelect输入框时间发生变化的回调function(date: moment)--
onOk点击确定按钮的回调function()--
onPanelChange日期面板变化时的回调function(value, mode)--

DatePicker[picker=year]​

参数说明类型默认值
defaultPickerValue默认面板日期moment--
defaultValue默认日期moment--
format展示的日期格式,配置参考 moment.jsstringYYYY
renderExtraFooter在面板中添加额外的页脚() => React.ReactNode--
value日期moment--
onChange时间发生变化的回调,发生在用户选择时间时function(date: moment, dateString: string)--

DatePicker[picker=quarter]​

4.1.0 新增。

参数说明类型默认值
defaultPickerValue默认面板日期moment--
defaultValue默认日期moment--
format展示的日期格式,配置参考 moment.jsstringYYYY-\QQ
renderExtraFooter在面板中添加额外的页脚() => React.ReactNode--
value日期moment--
onChange时间发生变化的回调,发生在用户选择时间时function(date: moment, dateString: string)--

DatePicker[picker=month]​

参数说明类型默认值
defaultPickerValue默认面板日期moment--
defaultValue默认日期moment--
format展示的日期格式,配置参考 moment.jsstringYYYY-MM
monthCellRender自定义的月份内容渲染方法function(date, locale): ReactNode--
renderExtraFooter在面板中添加额外的页脚() => React.ReactNode--
value日期moment--
onChange时间发生变化的回调,发生在用户选择时间时function(date: moment, dateString: string)--

DatePicker[picker=week]​

参数说明类型默认值
defaultPickerValue默认面板日期moment--
defaultValue默认日期moment--
format展示的日期格式,配置参考 moment.jsstringYYYY-wo
renderExtraFooter在面板中添加额外的页脚(mode) => React.ReactNode--
value日期moment--
onChange时间发生变化的回调,发生在用户选择时间时function(date: moment, dateString: string)--

RangePicker​

参数说明类型默认值
allowEmpty允许起始项部分为空[boolean, boolean][false, false]
dateRender自定义日期单元格的内容。info 参数自 4.3.0 添加function(currentDate: moment, today: moment, info: { range: start〡end }) => React.ReactNode--
defaultPickerValue默认面板日期moment[]--
defaultValue默认日期moment[]--
disabled禁用起始项[boolean, boolean]--
disabledTime不可选择的时间function(date: moment, partial:start〡end)--
format展示的日期格式stringYYYY-MM-DD HH:mm:ss
ranges预设时间范围快捷选择{ [range: string]: moment[] }〡{ [range: string]: () => moment[] }--
renderExtraFooter在面板中添加额外的页脚() => React.ReactNode--
separator设置分隔符string~
showTime增加时间选择功能Object〡booleanTimePicker Options
showTime.defaultValue设置用户选择日期时默认的时分秒moment[][moment(), moment()]
value日期moment[]--
onCalendarChange待选日期发生变化的回调。info 参数自 4.4.0 添加function(dates: [moment, moment], dateStrings: [string, string], info: { range:start〡end })--
onChange日期范围发生变化的回调function(dates: [moment, moment], dateStrings: [string, string])--