Skip to content

DatetimePicker 时间选择器 ​

uvx-datetime-picker 基于 uvx-picker 提供日期、时间、年月、日期时间和年份选择,支持范围、过滤和格式化。

平台兼容性 ​

AndroidiOS鸿蒙H5微信
3.9+4.11+4.61+4.0+4.41+

平台能力 ​

能力AndroidiOS鸿蒙H5微信
五种模式、日期范围和时间范围√√√√√
选项过滤、格式化和实例控制√√√√√
加载、工具栏、遮罩和圆角√√√√√

使用须知

  1. date、year-month、datetime、year 模式使用时间戳;time 模式使用 HH:mm 字符串。
  2. 滚轮变化只触发 change 并更新内部值;点击确认才触发 confirm、input 和 update:modelValue。
  3. clear-date=true 时确认不会触发 input 或更新 v-model,但仍触发 confirm。
  4. filter 用于增删每列候选值,formatter 只转换显示文字;回传值仍使用未格式化数据。
  5. cancel() 和 confirm() 方法只触发对应处理,不负责关闭;是否关闭由内部 Picker 的交互配置决定。

日期时间 ​

vue
<template>
   <uvx-datetime-picker
      ref="picker"
      v-model="value"
      mode="datetime"
      @confirm="handleConfirm"
   ></uvx-datetime-picker>
</template>

<script lang="uts" setup>
import type { ConfirmEvent } from "@/uni_modules/uvx-ui/components/uvx-datetime-picker/types/index.uts";

// 选择器实例
const picker = ref<UvxDatetimePickerComponentPublicInstance | null>(null);
// 绑定值,日期类模式为时间戳
const value = ref<number>(Date.now());

/**
 * 处理确认结果
 * @param event 确认事件
 * @returns null
 */
const handleConfirm = (event: ConfirmEvent): void => {
   console.log(event.value, event.mode);
};
</script>

日期、年月和年份 ​

vue
<template>
   <uvx-datetime-picker ref="datePicker" v-model="value" mode="date"></uvx-datetime-picker>
   <uvx-datetime-picker ref="monthPicker" v-model="value" mode="year-month"></uvx-datetime-picker>
   <uvx-datetime-picker ref="yearPicker" v-model="value" mode="year"></uvx-datetime-picker>
</template>

时间模式 ​

vue
<uvx-datetime-picker
   ref="timePicker"
   v-model="time"
   mode="time"
   :min-hour="8"
   :max-hour="20"
   :min-minute="0"
   :max-minute="59"
></uvx-datetime-picker>

日期范围 ​

vue
<uvx-datetime-picker
   ref="picker"
   v-model="value"
   mode="date"
   :min-date="minDate"
   :max-date="maxDate"
></uvx-datetime-picker>

过滤和格式化 ​

uts
import type { ColumnType } from "@/uni_modules/uvx-ui/components/uvx-datetime-picker/types/index.uts";

const filter = (type: ColumnType, values: string[]): string[] => {
   if (type != "year") return values;
   return values.filter((value: string): boolean => parseInt(value) % 2 == 0);
};

const formatter = (type: ColumnType, value: string): string => {
   if (type == "year") return `${value}年`;
   if (type == "month") return `${value}月`;
   return value;
};

实例控制 ​

uts
picker.value?.open();
picker.value?.setFormatter(formatter);
picker.value?.confirm();
picker.value?.close();

API ​

Props ​

属性说明类型默认值平台
value兼容绑定值string | number""全部
model-value双向绑定值string | number""全部
show-toolbar是否显示顶部工具栏booleantrue全部
title工具栏标题string""全部
mode选择模式date | time | year-month | datetime | yeardatetime全部
max-date最大日期时间戳number当前年份后十年的 1 月 1 日全部
min-date最小日期时间戳number当前年份前十年的 1 月 1 日全部
min-hour / max-hour时间模式小时范围number0 / 23全部
min-minute / max-minute时间模式分钟范围number0 / 59全部
filter各列候选值过滤函数Filternull(不过滤)全部
formatter各列显示值格式化函数Formatternull(不格式化)全部
loading是否显示加载状态booleanfalse全部
item-height单个选项高度number44全部
cancel-text / confirm-text工具栏国际化按钮文字string取消 / 确定全部
cancel-color / confirm-color取消/确认文字颜色string""全部
visible-item-count每列可见选项数量number5全部
close-on-click-overlay点击遮罩是否关闭booleantrue全部
close-on-click-confirm点击确认后是否关闭booleantrue全部
clear-date确认时是否禁止回写绑定值booleanfalse全部
round底部弹层圆角string | number0全部
u-style选择器内容样式,CSS 字符串string""全部
u-class选择器内容追加类名string""全部

Events ​

事件说明参数平台
update:modelValue / input确认且 clear-date=false 时触发PickerValue全部
change滚轮值变化时触发ChangeEvent全部
confirm确认当前内部值时触发ConfirmEvent全部
cancel取消时触发-全部
close内部 Picker 关闭时触发-全部

Methods ​

方法说明参数平台
open() / close()打开或关闭选择器-全部
cancel()触发取消处理,不自动关闭-全部
confirm()确认当前值,不自动关闭-全部
setFormatter(formatter)设置本地格式化函数并同步选择器Formatter全部

ChangeEvent / ConfirmEvent ​

字段说明类型
value当前值;日期类模式为时间戳,时间模式为字符串string | number
mode当前选择模式Mode

参考 ​

uvx-ui · uni-app x 组件库