Skip to content

DatePicker 日期选择器 ​

用于选择日期、时间或日期时间。

基础用法 ​

未选择
vue
<my-date-picker v-model="date" placeholder="选择日期" />

日期时间 ​

type="datetime" 同时选择日期和时间。

未选择
vue
<my-date-picker v-model="date" type="datetime" />

时间选择 ​

type="time" 仅选择时间。

未选择
vue
<my-date-picker v-model="time" type="time" />

尺寸 ​

vue
<my-date-picker v-model="date" size="large" />
<my-date-picker v-model="date" />
<my-date-picker v-model="date" size="small" />

格式选项 ​

format 控制显示格式,支持 YYYY/MM/DD/HH/mm/ss。

值:
vue
<my-date-picker v-model="date" format="DD/MM/YYYY" />
<my-date-picker v-model="date" format="YYYY年MM月DD日" />

可清除 ​

clearable 在输入框内显示清除按钮。

×
vue
<my-date-picker v-model="date" clearable />

禁用 ​

vue
<my-date-picker v-model="date" disabled />

自定义指示器 ​

#trigger 插槽自定义触发元素。

vue
<my-date-picker v-model="date">
  <template #trigger="{ toggle, value }">
    <my-button @click="toggle">
      {{ value || '点击选择日期' }}
    </my-button>
  </template>
</my-date-picker>

表单校验 ​

结合 Form 组件的校验规则使用。

vue
<my-form ref="formRef" :model="form" :rules="rules">
  <my-form-item prop="date" label="日期">
    <my-date-picker v-model="form.date" />
  </my-form-item>
  <my-form-item prop="birth" label="生日">
    <my-date-picker v-model="form.birth" />
  </my-form-item>
</my-form>

<script setup>
const rules = {
  date: [{ required: true, message: '请选择日期', trigger: 'change' }],
  birth: [
    { required: true, message: '请选择生日', trigger: 'change' },
    {
      validator: (val, cb) => {
        if (val && new Date(val) > new Date()) cb('生日不能是未来日期')
        else cb()
      },
      trigger: 'change',
    },
  ],
}
</script>

组件结构 ​

<div> 根元素包含触发区(输入框 + 后缀图标 + 清除按钮)和下拉面板。面板内分日期模式(头部导航 + 星期行 + 日期网格)和时间模式(时/分/秒下拉选择 + 确定按钮)。

CSS 类名 ​

类名说明
.my-date-picker根元素
.is-large大尺寸
.is-small小尺寸
.my-date-picker__trigger触发区域
.my-date-picker__input输入框
.my-date-picker__suffix后缀图标
.my-date-picker__clear清除按钮
.my-date-picker__panel下拉面板
.my-date-picker__header面板头部(年月导航)
.my-date-picker__title年月标题
.my-date-picker__nav月份切换按钮
.my-date-picker__weekdays星期行
.my-date-picker__days日期网格
.my-date-picker__day日期单元格
.is-selected选中日期
.is-today今天标记
.is-empty空白占位
.my-date-picker__time时间选择区域
.my-date-picker__time-row时间选择行
.my-date-picker__time-select时/分/秒下拉
.my-date-picker__time-actions时间确认区域
.my-date-picker__time-btn时间确认按钮
.-fade-*面板过渡动画

API ​

Props ​

属性说明类型默认值
modelValue绑定值 (v-model)string—
placeholder占位文字string'选择日期'
type选择器类型'date' | 'datetime' | 'time''date'
format显示格式string—
size尺寸'large' | 'default' | 'small''default'
disabled禁用booleanfalse
clearable可清除booleanfalse

Events ​

事件说明回调
update:modelValuev-model 更新(value: string)
change值改变(value: string)
blur失焦(e: FocusEvent)
focus获焦(e: FocusEvent)

Slots ​

名称说明作用域
trigger自定义触发元素{ value, toggle, clear }

格式化标记 ​

标记说明
YYYY四位年份
MM两位月份
DD两位日期
HH小时 (24h)
mm分钟
ss秒