Skip to content

DatetimePicker 日期时间选择器

日期时间选择器组件,底部弹出滚轮面板,支持日期、时间、日期时间、年月、月日等多种选择类型。支持范围限制、自定义格式化和过滤,年月变化时自动修正日期有效性。

平台差异说明

App(vue)App(nvue)H5小程序

日期选择

  • 设置 type'date',仅显示年、月、日三列。
html
<see-datetime-picker v-model="value" type="date" />

<script lang="ts" setup>
import { ref } from 'vue'

const value = ref(new Date())
</script>

时间选择

  • 设置 type'time',仅显示时、分两列。
  • 设置 isShowSecondstrue 可额外显示秒列。
html
<see-datetime-picker v-model="value" type="time" />
<see-datetime-picker v-model="value" type="time" isShowSeconds />

<script lang="ts" setup>
import { ref } from 'vue'

const value = ref(new Date())
</script>

日期时间选择

  • 设置 type'datetime'(默认),同时显示年月日和时分。
  • 设置 isShowSecondstrue 可额外显示秒列。
html
<see-datetime-picker v-model="value" type="datetime" />
<see-datetime-picker v-model="value" type="datetime" isShowSeconds />

<script lang="ts" setup>
import { ref } from 'vue'

const value = ref(new Date())
</script>

年月选择

  • 设置 type'year-month',仅显示年和月两列。
html
<see-datetime-picker v-model="value" type="year-month" />

<script lang="ts" setup>
import { ref } from 'vue'

const value = ref(new Date())
</script>

月日选择

  • 设置 type'month-day',仅显示月和日两列。
html
<see-datetime-picker v-model="value" type="month-day" />

<script lang="ts" setup>
import { ref } from 'vue'

const value = ref(new Date())
</script>

范围限制

  • 通过 minDatemaxDate 限制可选日期范围。
  • 通过 minHourmaxHourminMinutemaxMinute 限制可选时间范围。
  • 年、月、日各列的选项会根据范围自动裁剪,确保日期有效性。
html
<see-datetime-picker
  v-model="value"
  type="date"
  :minDate="minDate"
  :maxDate="maxDate"
/>

<see-datetime-picker
  v-model="value"
  type="time"
  :minHour="8"
  :maxHour="18"
  :minMinute="0"
  :maxMinute="59"
/>

<script lang="ts" setup>
import { ref } from 'vue'

const value = ref(new Date())
const minDate = new Date(2020, 0, 1)
const maxDate = new Date(2030, 11, 31)
</script>

自定义格式化

  • 通过 formatter 函数自定义选项的显示格式,函数接收列类型和原始值。
html
<see-datetime-picker
  v-model="value"
  type="datetime"
  :formatter="formatter"
/>

<script lang="ts" setup>
import { ref } from 'vue'

const value = ref(new Date())

function formatter(type: string, value: string) {
  if (type === 'year') return `${value}年`
  if (type === 'month') return `${value}月`
  if (type === 'day') return `${value}日`
  if (type === 'hour') return `${value}时`
  if (type === 'minute') return `${value}分`
  return value
}
</script>

自定义过滤

  • 通过 filter 函数过滤可选项,函数接收列类型和可选值数组,返回过滤后的值数组。
html
<see-datetime-picker
  v-model="value"
  type="time"
  :filter="filter"
/>

<script lang="ts" setup>
import { ref } from 'vue'

const value = ref(new Date())

function filter(type: string, values: string[]) {
  // 只允许选择整点和半点
  if (type === 'minute') {
    return values.filter((v) => Number(v) % 30 === 0)
  }
  return values
}
</script>

自定义配置

  • 通过 toolbarTitle 设置标题。
  • 通过 confirmTextcancelText 自定义按钮文字。
  • 通过 placeholder 自定义占位文本。
html
<see-datetime-picker
  v-model="value"
  type="date"
  toolbarTitle="选择日期"
  confirmText="确定"
  cancelText="关闭"
  placeholder="请选择日期"
/>

API

Props

参数说明类型默认值
modelValue绑定值(v-model)Date | string | number''
type选择器类型'date' | 'time' | 'datetime' | 'year-month' | 'month-day''datetime'
placeholder占位符string'请选择'
isDisabled是否禁用booleanfalse
isReadonly是否只读booleanfalse
isShowToolbar是否显示顶部工具栏booleantrue
toolbarTitle工具栏标题string''
confirmText确认按钮文字string'确认'
cancelText取消按钮文字string'取消'
minDate最小日期Date | string | number''
maxDate最大日期Date | string | number''
minHour最小小时number0
maxHour最大小时number23
minMinute最小分钟number0
maxMinute最大分钟number59
isShowSeconds是否显示秒列booleanfalse
formatter自定义格式化函数(type: string, value: string) => string-
filter自定义过滤函数(type: string, values: string[]) => string[]-
size尺寸'small' | 'default' | 'large''default'
isBorder是否显示边框booleantrue
name表单字段名string''

Events

事件名说明回调参数
onChange选中值变化时触发value: Date
onConfirm点击确认按钮时触发value: Date
onCancel点击取消按钮或遮罩时触发-

Expose

方法说明参数
open打开选择器-
close关闭选择器-
isVisible获取当前是否展开-

辽 ICP 备 2025070134 号