Skip to content

n-date-time-picker 日期时间选择器 ​

底部弹层 + 滚轮选择:从年 / 月 / 日 / 时 / 分列中选出一个时刻,值是毫秒时间戳。列数据由组件内日历函数生成,大小月与闰年自动处理;年月日时分逐列联动可选范围(选中项贴住下界 / 上界时,相邻列自动收紧到界内),游标越界自动夹回。支持 date(年月日)/ time(时分)/ datetime(年月日时分)三种模式。

值与显隐支持 v-model 和 v-model:visible,也可显式回写更新事件: :model-value + @update:model-value、:visible + @update:visible

平台兼容性 ​

App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序
√ √ √ × × × ×

API ​

属性 ​

参数 说明 类型 默认值 可选值
model-value 当前值(毫秒时间戳,组件按分钟对齐);0 = 未设置,打开面板时回退当前时间 Number 0 -
mode 选择器类型 String datetime date<br/>time<br/>datetime
visible 是否显示选择面板;确认 / 取消 / 点遮罩后组件回传 false(update:visible),须配合 :visible 手动双向控制显隐 Boolean false -
min-date 可选日期下界(毫秒时间戳);0 = 当前时间往前 10 年 Number 0 -
max-date 可选日期上界(毫秒时间戳);0 = 当前时间往后 10 年 Number 0 -
title 面板标题(工具栏中间);空串 = 不显示标题 String "" -
cancel-text 弹层取消按钮文字;留空用内置多语言文案 String "" -
confirm-text 弹层确定按钮文字;留空用内置多语言文案 String "" -
custom-class 挂到根节点的额外 class(需是组件样式表内已定义的类;根节点无默认视觉,改面板外观用 panel-style) String "" -
custom-style 根节点行内样式 String "" 与 css 相同
panel-style 微调面板的行内样式,如 "border-radius:20px 20px 0px 0px" String "" 与 css 相同

事件 ​

事件名 说明 回调参数
update:model-value 确认时触发,配合 :model-value 手动双向绑定 毫秒时间戳
confirm 点确定按钮时触发 毫秒时间戳
cancel 点取消按钮或遮罩时触发 -
update:visible 确认 / 取消 / 点遮罩后触发(参数 false),配合 :visible 手动双向控制显隐 Boolean

使用边界与设计取舍 ​

  • 显隐是受控的:确认、取消、点遮罩都不会自行关闭面板,组件只回传 update:visible(false)——是否收起由使用者在回调里决定(漏绑 @update:visible 面板会留在屏上)。
  • 时间粒度为分钟:传入值自动按分钟对齐(秒与毫秒归零);mode="time" 只改时分,日期部分保留传入值(未设置取当天)。
  • 未提供 formatter:滚轮列文案为「数值 + 本地化单位后缀」(中文年 / 月 / 日 / 时 / 分,英文纯数字),不支持自定义列文案函数。需要完全自定义列文案时,请基于原生 picker-view 自行组装。
  • 值始终是毫秒时间戳,不提供字符串输出格式 prop:部分同类组件可配置回传值格式(输出 2026-11-02 21:30 之类字符串)。本库取时间戳单一契约——可直接比较与参与日期运算、回传组件无需解析;展示层文案格式(含补零、分隔符)是页面自己的文案口径,在回显处转换即可(演示页回现行即此写法)。
  • 点遮罩 = 取消:遮罩点击走 cancel 回调,不发 confirm。
  • 结构与令牌:滚轮行高 / 工具栏高度走 --n-date-time-picker-item-height / --n-date-time-picker-toolbar-height(uni.scss 同名覆盖 $n-date-time-picker-item-height 等编译期变量亦可);行高覆盖默认值时需同步组件内 ITEM_HEIGHT 常量(选中带高度由脚本提供);面板上圆角为结构字面量 14px,可用 panel-style 覆盖。
  • 底部安全区:面板自动垫底部安全区(小白条 / 手势条高度),无需自行处理。

记录 · 思考 · 创作