Skip to content

DatePicker 日期选择器

AuDatePickerPane 提供可独立嵌入的日历面板,AuDatePicker 将面板组合为输入控件,AuDateTimePicker 在同一浮层中完成日期与时间确认。组件使用本地日期语义,不会把纯日期转换为 UTC。

基础用法

日期与日期时间

日期即时提交,日期范围在选完起止日期后提交,日期时间在点击确定后提交。

日期:2026-08-28

日期时间:2026-08-30 14:30:00

日期范围:2026-08-18 至 2026-08-26

vue
<template>
  <div class="date-picker-demo">
    <div class="date-picker-demo__fields">
      <label>
        <span>日期</span>
        <AuDatePicker
          v-model="date"
          :min-date="minimumDate"
          :disabled-date="disableWeekends"
        />
      </label>
      <label>
        <span>日期时间</span>
        <AuDateTimePicker v-model="dateTime" :minute-step="5" :min-date="minimumDateTime" />
      </label>
      <label class="date-picker-demo__range">
        <span>日期范围</span>
        <AuDatePicker
          v-model="dateRange"
          type="daterange"
          start-placeholder="开始日期"
          end-placeholder="结束日期"
          :min-date="minimumDate"
        />
      </label>
    </div>
    <p>日期:{{ date || '未选择' }}</p>
    <p>日期时间:{{ dateTime || '未选择' }}</p>
    <p>日期范围:{{ dateRange.length ? dateRange.join(' 至 ') : '未选择' }}</p>
  </div>
</template>
<script setup>
import { ref } from 'vue';
import { AuDatePicker, AuDateTimePicker } from 'aurora-plus';
const date = ref('2026-08-28');
const dateTime = ref('2026-08-30 14:30:00');
const dateRange = ref(['2026-08-18', '2026-08-26']);
const minimumDate = '2026-08-01';
const minimumDateTime = '2026-08-01 09:00:00';
function disableWeekends(dateValue) {
  return dateValue.getDay() === 0 || dateValue.getDay() === 6;
}
</script>
<style scoped>
.date-picker-demo {
  display: grid;
  width: min(100%, 640px);
  gap: 12px;
}
.date-picker-demo__fields {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
  gap: 12px;
}
.date-picker-demo__fields label {
  display: grid;
  gap: 6px;
  color: var(--au-color-text-secondary);
  font-size: var(--au-font-size-small);
}
.date-picker-demo__range {
  grid-column: 1 / -1;
}
.date-picker-demo p {
  margin: 0;
  color: var(--au-color-text-secondary);
  font-size: var(--au-font-size-small);
}
</style>

AuDatePickerPane 是不包含触发器的裸面板,直接使用时会像普通内容一样常驻显示;需要点击后弹出的日期控件应使用 AuDatePicker。业务确实需要自行控制裸面板时,可配合 v-if 管理其显隐。

值与格式

  • 默认字符串格式分别为 YYYY-MM-DDYYYY-MM-DD HH:mm:ss;可用标记为 YYYYMMDDHHmmss
  • valueType="auto" 会保留已有值的类型:Date 继续回传 Date,时间戳继续回传时间戳,其余情况回传字符串。也可显式指定 stringdatetimestamp
  • valueFormat 控制字符串模型格式,displayFormat 只控制输入框显示与手动输入格式。
  • disabledDate(date) 应返回布尔值;返回 true 的日期不可选择。
  • 使用 type="daterange" 时,模型为长度为 2 的数组;未完成第二次选择前仅触发 calendar-change,不会提交半成品模型。

DatePicker API

Attributes

属性说明类型默认值
modelValue当前日期;范围模式为二元数组string / Date / number / array''
type单日期或日期范围date / daterangedate
valueType输出类型auto / string / date / timestampauto
valueFormat字符串模型格式stringYYYY-MM-DD
displayFormat输入框显示与解析格式stringYYYY-MM-DD
size尺寸small / default / largedefault
placeholder占位文字string选择日期
startPlaceholder / endPlaceholder范围模式起止占位文字string开始日期 / 结束日期
rangeSeparator范围输入分隔文字string
disabled / readonly禁用 / 只读booleanfalse
editable是否允许键盘输入booleantrue
clearable是否允许清空;有值时清除按钮原位替换日期图标booleantrue
invalid外部错误状态booleanfalse
localeIntl 区域标识stringzh-CN
firstDayOfWeek每周起始日,0 为周日number1
minDate / maxDate日期边界string / Date / numbernull
disabledDate日期禁用函数(date) => booleannull
defaultValue无值时默认展示日期;范围可传数组string / Date / number / arraynull
showAdjacentDates是否显示相邻月份日期booleantrue
showToday是否显示“今天”操作booleantrue
unlinkPanels范围模式下两个面板是否独立切月booleanfalse
placement浮层方位stringbottom-start
teleported / appendTo / zIndex浮层挂载与层级boolean / string | Element / numbertrue / body / 1200
ariaLabel控件无障碍名称string选择日期

classstyle 作用于组件外壳;name 会生成隐藏表单字段,其他原生属性传给可编辑输入框。

Events

事件名说明参数
update:modelValue日期更新(value)
change有效日期提交(value, date, event)
clear清空(event)
focus / blur输入框焦点变化(event)
visible-change浮层显隐变化(visible)
invalid-input手动输入无法解析或不可用(text, event)
panel-change浏览月份变化(viewDate)
calendar-change范围选择草稿变化([start, end])

Exposes

focus(options?)blur()open()close(reason?),以及 inputRefpaneRefpopoverRef

范围模式也可直接使用 AuDateRangePicker,其属性和事件与 AuDatePicker type="daterange" 相同,并额外暴露左右面板与两个输入框引用。

DatePickerPane API

面板支持 modelValuevalueTypevalueFormatlocalefirstDayOfWeekminDatemaxDatedisabledDateshowAdjacentDatesariaLabel,并额外提供:

属性说明默认值
defaultDate无值时首次展示的月份null
showToday显示今天操作true
surface显示独立材质、边框与层级true

事件包括 update:modelValuechange(value, date, event)select(value, date, event)panel-change(viewDate)footer 插槽接收 today()。面板暴露 focus()showDate(value)paneRef

键盘可使用方向键按日 / 周移动,Home / End 移动到周边界,PageUp / PageDown 切换月份,配合 Shift 切换年份,Enter 或空格选择。

DateTimePicker API

日期时间选择器继承 DatePicker 的输入、浮层、日期边界和格式属性,并增加:

属性说明默认值
showSeconds是否显示秒;未设置格式时同步切换短格式true
hourStep / minuteStep / secondStep时间选项步长1
disabledTime日期时间禁用函数 (date) => booleannull

默认 valueFormatdisplayFormatYYYY-MM-DD HH:mm:ss;隐藏秒时为 YYYY-MM-DD HH:mm。事件和 Exposes 与 DatePicker 一致,datePaneRef 代替 paneRef

Aurora Plus · Vue 3 Component Library