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覆盖。 - 底部安全区:面板自动垫底部安全区(小白条 / 手势条高度),无需自行处理。