更新记录
1.1.0(2025-12-15) 下载此版本
1
1.0.9(2025-12-11) 下载此版本
1
1.0.8(2025-12-11) 下载此版本
1
查看更多平台兼容性
uni-app(4.72)
| Vue2 | Vue2插件版本 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|---|
| √ | 1.0.0 | - | √ | - | √ | - | - | - | - |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|
| √ | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.63)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | - | - | - | - |
📅 lfj-time-picker (时间选择器)
🔍 功能简介
lfj-time-picker 是一个基于 UniApp 框架开发的多功能时间选择器组件,支持以下核心功能:
- ✅ 支持自定义时间格式(如
yyyy-mm-dd hh:MM:ss) - ✅ 可按需显示年、月、日、时、分、秒等字段(通过
mode属性配置) - ✅ 支持开始/结束时间区间选择(范围选择)
- ✅ 可禁用或启用时间段选择
- ✅ 支持弹窗底部滑出动画,适配安全区域
- ✅ 提供丰富的回调事件与数据绑定
- ✅ 自动处理时间范围限制
- ✅ 支持双列选择时间段选择(年、月、日、时、分、秒各列支持范围选择)
- ✅
hour/minute/second可设置可选范围 - ✅ 通过
formatter回调自定义列的展示文案
⚠️ 本组件基于官方
uni-popup构建,兼容 H5、小程序、App 多端。
📦 使用方式
1. 基础用法
<template>
<view>
<lfj-time-picker
:show="show"
:title="title"
:format="format"
:start-time="startTime"
:end-time="endTime"
:range="range"
@column="onTimeSelected" />
</view>
</template>
<script>
export default {
data() {
return {
show: false,
title: '选择时间',
format: 'yyyy-mm-dd hh:MM:ss',
startTime: Date.now(),
endTime: Date.now() + 10 * 365 * 24 * 60 * 60 * 1000,
range: true,
};
},
methods: {
onTimeSelected(timeStr) {
console.log('选中的时间:', timeStr);
this.show = false;
},
},
};
</script>
2. 自定义显示字段(mode 属性)
<template>
<view>
<!-- 只显示年月 -->
<lfj-time-picker :show="show1" :mode="['year', 'month']" :format="'yyyy年mm月'" @column="onMonthSelected" />
<!-- 显示时分秒 -->
<lfj-time-picker
:show="show2"
:mode="['hour', 'minute', 'second']"
:format="'hh:MM:ss'"
@column="onTimeSelected" />
</view>
</template>
3. 双列时间段选择(doubleColumn 属性) (仅支持单个 mode 模式)
<template>
<view>
<!-- 双列选择年 -->
<lfj-time-picker
:show="show3"
:range="true"
:mode="['year']"
:double-column="true"
:format="'yyyy年'"
@column="onYearMonthSelected" />
</view>
</template>
4. 自定义区间与展示格式
<template>
<view>
<!-- 仅允许 08:00-18:00,并自定义展示格式 -->
<lfj-time-picker
:show="show4"
:range="true"
:mode="['hour']"
:double-column="true"
:hour-range="[8, 18]"
:format="'hh:MM'"
:formatter="customFormatter"
@column="onTimeSelected" />
</view>
</template>
<script>
export default {
methods: {
customFormatter(type, value) {
// 仅处理小时列,其余返回默认值
if (type === 'hour') return `${value}:00`;
return value;
},
onTimeSelected(value) {
console.log('选中的时间段:', value);
},
},
};
</script>
📋 Props 说明
| 属性名 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| show | Boolean | false |
是否显示弹窗 |
| title | String | '选择时间' |
弹窗标题 |
| format | String | 'yyyy-mm-dd hh:MM:ss' |
时间格式字符串,示例:yyyy-mm-dd、yyyy年mm月dd日、hh:MM:ss |
| mode | String, Array | 'year,month,day,hour,minute,second' |
控制显示哪些字段,可配值为:year、month、day、hour、minute、second |
| startTime | Number/String | 当前时间戳 | 开始时间(毫秒) |
| endTime | Number/String | 十年后时间戳 | 结束时间(毫秒) |
| range | Boolean | true |
是否开启时间段选择模式 |
| doubleColumn | Boolean | false |
是否开启双列选择模式,仅当 mode 只包含单个粒度时生效 |
| hourRange | Array | [0, 23] |
小时可选范围,格式为 [开始, 结束] |
| minuteRange | Array | [0, 59] |
分钟可选范围,格式为 [开始, 结束] |
| secondRange | Array | [0, 59] |
秒可选范围,格式为 [开始, 结束] |
| formatter | Function | null |
自定义列展示文本 (type, value) => string,可用于追加单位或处理双列展示 |
| indicatorStyle | String | 'height: 70px;' |
picker-view 中间指示器样式 |
| height | String | '500rpx' |
弹窗高度 |
📌 事件说明
| 事件名 | 参数 | 说明 |
|---|---|---|
| @column | string |
选择完成后的返回值,格式为 开始时间 - 结束时间 或单独时间 |
| @open | 无 | 弹窗打开时触发 |
| @close | 无 | 弹窗关闭时触发 |
📝 格式说明
组件支持的时间格式标记:
yyyy:年(4 位)mm:月(01-12)dd:日(01-31)hh:时(00-23)MM:分(00-59)ss:秒(00-59)
示例:
yyyy-mm-dd→ 2023-12-01yyyy年mm月dd日 hh时MM分ss秒→ 2023 年 12 月 01 日 14 时 30 分 45 秒mm/dd/yyyy→ 12/01/2023
💡 使用建议
-
时间范围限制:
- 组件会自动限制选择时间在
startTime和endTime范围内 - 若需限制用户只能选择未来时间,请确保
startTime不早于当前时间
- 组件会自动限制选择时间在
-
多字段选择:
- 使用
mode属性控制显示哪些时间字段 - 示例:
mode="['year', 'month']"只显示年月选择
- 使用
-
时间段选择:
- 当
range="true"时,用户需要先选择开始时间,再选择结束时间 - 若未选择开始时间就切换至结束时间,系统会提示"请先选择开始时间"
- 双列模式会自动保持结束值大于开始值,避免选反
- 当
-
自定义展示与范围:
- 通过
formatter(type, value)可自定义每一列的展示文案(如追加单位、格式化双列) hourRange/minuteRange/secondRange可限制可选时间区间,常用于营业时间、排班等场景
- 通过
🛠️ 开发者提示
- 组件内部通过
computed和watch实现动态时间范围计算,性能良好 setTimeValue方法支持传入任意时间戳或时间字符串,自动适配- 如需扩展更多时间格式,可在
format字段中自由组合上述格式标记 - 组件已处理各平台时间格式兼容性问题
📎 示例项目
请参考项目根目录下的 pages/index/index.vue 文件,其中已包含完整使用示例。

收藏人数:
下载插件并导入HBuilderX
下载示例项目ZIP
赞赏(0)
下载 597
赞赏 4
下载 13305190
赞赏 1845
赞赏
京公网安备:11010802035340号