DatePicker 日期选择器
DatePicker 日期选择器
输入或选择日期的控件。
何时使用
当用户需要输入一个日期,可以点击标准输入框,弹出日期面板进行选择。
导入
代码演示
基础用法
最简单的用法,在浮层中可以选择或者输入日期。
选择器类型
通过 picker 属性指定不同类型。
日期格式
使用 format 属性自定义日期显示格式。
日期时间选择
增加选择时间功能,配合 showTime 使用。
日期限定范围
通过 minDate 和 maxDate 限定日期范围。
不可选择日期
通过 disabledDate 禁用部分日期。
预设范围
预设常用的日期选项。
大小
不同大小的日期选择器。
形态变体与校验状态
variant、status、bordered 与 Input 完全同一套主题映射,放在同一表单里视觉天然一致。
与 Input 混排示例:
禁用
可清除
范围选择 RangePicker
通过 DateRangePicker 实现范围日期选择,双面板日历,支持悬停预览、快捷预设、时间选择。
范围选择 + 时间
范围选择器类型
DateRangePicker 同样支持 picker:week / month / quarter / year。month / quarter / year 为单面板,date / week 为双面板。
范围禁用与清除
API
DatePicker Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| modelValue (v-model) | 当前值 | Dayjs | null | null |
| defaultValue | 默认值 | Dayjs | null | null |
| placeholder | 占位文字 | string | 请选择日期 |
| picker | 选择器类型 | date | week | month | quarter | year | date |
| disabled | 是否禁用 | boolean | false |
| allowClear | 是否支持清除 | boolean | true |
| size | 输入框大小 | small | medium | large | medium |
| variant | 形态变体(与 Input 一致) | outlined | borderless | filled | underlined | outlined |
| status | 校验状态 | error | warning | - |
| bordered | 是否显示边框 | boolean | true |
| format | 日期格式 | string | 根据 picker 自动 |
| showTime | 是否显示时间选择 | boolean | false |
| minDate | 最小日期 | Dayjs | null | null |
| maxDate | 最大日期 | Dayjs | null | null |
| disabledDate | 禁用日期函数 | (current: Dayjs) => boolean | - |
| presets | 预设选项 | DatePickerPreset[] | - |
| side | 弹出位置 | top | bottom | bottom |
| sideOffset | 偏移量 | number | 4 |
DatePicker Events
| 事件 | 说明 | 回调参数 |
|---|---|---|
| change | 日期变化回调 | (value: Dayjs | null, dateString: string) |
| openChange | 弹出层状态变化 | (open: boolean) |
默认格式
| picker | format |
|---|---|
| date | YYYY-MM-DD |
| month | YYYY-MM |
| year | YYYY |
| week | YYYY 第 N 周 |
| quarter | YYYY 第 N 季度 |
| date + showTime | YYYY-MM-DD HH:mm:ss |
v-model 写入的是可被 dayjs 回读的日期串(year → YYYY、month → YYYY-MM、week/quarter/date → YYYY-MM-DD);
输入框展示文案与 change 事件的 dateString 才是「2026 第 N 周 / 第 N 季度」这类可读文本。
DatePickerPreset
| 参数 | 说明 | 类型 |
|---|---|---|
| label | 预设标签 | string |
| value | 预设值 | Dayjs |
DateRangePicker Props
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| modelValue (v-model) | 范围值 | [string | null, string | null] | null | null |
| placeholder | 占位文字,可传 [开始占位, 结束占位] | string | [string, string] | 开始日期 / 结束日期 |
| picker | 选择器类型 | date | week | month | quarter | year | date |
| disabled | 是否禁用 | boolean | false |
| allowClear | 是否支持清除 | boolean | true |
| size | 输入框大小 | small | medium | large | medium |
| variant | 形态变体(与 Input 一致) | outlined | borderless | filled | underlined | outlined |
| status | 校验状态 | error | warning | - |
| bordered | 是否显示边框 | boolean | true |
| format | 日期格式 | string | YYYY-MM-DD |
| showTime | 是否显示时间选择 | boolean | false |
| minDate | 最小日期 | Dayjs | string | null | null |
| maxDate | 最大日期 | Dayjs | string | null | null |
| disabledDate | 禁用日期函数 | (current: Dayjs) => boolean | - |
| presets | 范围快捷预设 | DatePickerRangePreset[] | - |
| separator | 开始与结束分隔符 | string | ~ |
| class | 自定义类名 | string | - |
DateRangePicker Events
| 事件 | 说明 | 回调参数 |
|---|---|---|
| change | 范围变化回调 | (value: [string, string] | null, dateStrings: [string, string]) |
| openChange | 弹出层状态变化 | (open: boolean) |
DateRangePickerPreset
| 参数 | 说明 | 类型 |
|---|---|---|
| label | 预设标签 | string |
| value | 预设值 | [Dayjs, Dayjs] | (() => [Dayjs, Dayjs]) |
CalendarPanel
日历面板组件,可独立使用,内置范围高亮能力。
| 参数 | 说明 | 类型 | 默认值 |
|---|---|---|---|
| viewDate | 当前显示日期 | Dayjs | dayjs() |
| selected | 选中的日期 | Dayjs | null | null |
| picker | 面板类型 | date | month | year | date |
| minDate | 最小日期 | Dayjs | null | null |
| maxDate | 最大日期 | Dayjs | null | null |
| disabledDate | 禁用日期函数 | (current: Dayjs) => boolean | - |
| rangeStart | 范围开始日期 | Dayjs | null | null |
| rangeEnd | 范围结束日期 | Dayjs | null | null |
| hoverDate | 悬停预览日期 | Dayjs | null | null |
| 事件 | 说明 | 回调参数 |
|---|---|---|
| select | 选择日期 | (date: Dayjs) |
| hover | 悬停日期 | (date: Dayjs | null) |
