更新记录
1.0.2(2025-01-10)
下载此版本
修复日期区域显示超出真机宽度问题
1.0.1(2025-01-10)
下载此版本
兼容了多平台,优化了组件性能
1.0.0(2025-01-09)
下载此版本
初始版本上线
查看更多
平台兼容性
App |
快应用 |
微信小程序 |
支付宝小程序 |
百度小程序 |
字节小程序 |
QQ小程序 |
HBuilderX 3.2.6 app-vue |
× |
√ |
√ |
√ |
√ |
× |
钉钉小程序 |
快手小程序 |
飞书小程序 |
京东小程序 |
鸿蒙元服务 |
× |
× |
× |
× |
× |
H5-Safari |
Android Browser |
微信浏览器(Android) |
QQ浏览器(Android) |
Chrome |
IE |
Edge |
Firefox |
PC-Safari |
× |
× |
× |
× |
√ |
× |
× |
× |
× |
日期时间范围选择器组件使用说明
组件介绍
一个用于选择日期时间范围的 Vue 组件,主要用于租车、酒店预订等场景。支持日期选择、时间选择、租期计算等功能。
安装使用
- 在需要使用的页面中引入组件:
import startEndDateTime from '@/uni_modules/start-end-date-time/components/start-end-date-time/start-end-date-time.vue';
export default {
components: {
startEndDateTime
},
}
## 基础用法
```vue
<template>
<view>
<start-end-date-time @confirm="handleDateTimeConfirm" :defaultStartDate="defaultStartDate"
:defaultStartTime="defaultStartTime" :defaultEndDate="defaultEndDate" :defaultEndTime="defaultEndTime" />
</view>
</template>
属性说明
属性名 |
类型 |
默认值 |
说明 |
startDateTime |
String/Date |
null |
初始开始日期时间 |
endDateTime |
String/Date |
null |
初始结束日期时间 |
minDate |
String/Date |
当前日期 |
最小可选日期 |
maxDate |
String/Date |
一年后 |
最大可选日期 |
timeStep |
Number |
30 |
时间间隔(分钟) |
showHeader |
Boolean |
true |
是否显示顶部信息栏 |
事件说明
事件名 |
说明 |
回调参数 |
confirm |
确认选择时触发 |
{startDateTime, endDateTime, duration} |
reset |
重置选择时触发 |
- |
update:startDateTime |
开始时间更新时触发 |
value |
update:endDateTime |
结束时间更新时触发 |
value |
功能特点
- 支持日期范围选择
- 支持时间选择(可设置时间间隔)
- 自动计算租期时长
- 最小租期限制(1小时)
- 最大租期限制(30天)
- 防止选择过期时间
- 支持同一天租期选择
- 适配不同屏幕尺寸
使用示例
<template>
<view>
<start-end-date-time @confirm="handleDateTimeConfirm" :defaultStartDate="defaultStartDate"
:defaultStartTime="defaultStartTime" :defaultEndDate="defaultEndDate" :defaultEndTime="defaultEndTime" />
</view>
</template>
<script>
import startEndDateTime from '@/uni_modules/start-end-date-time/components/start-end-date-time/start-end-date-time.vue';
export default {
components: {
startEndDateTime
},
data() {
return {
defaultStartDate: '',
defaultStartTime: '',
defaultEndDate: '',
defaultEndTime: ''
}
},
onLoad() {
// 页面加载时获取存储的日期时间数据
const dateTimeData = uni.getStorageSync('selectedDateTime')
if (dateTimeData) {
this.defaultStartDate = dateTimeData.start.date
this.defaultStartTime = dateTimeData.start.time
this.defaultEndDate = dateTimeData.end.date
this.defaultEndTime = dateTimeData.end.time
} else {
// 如果没有存储数据,设置默认值为明天和后天
const tomorrow = new Date()
tomorrow.setDate(tomorrow.getDate() + 1)
const dayAfterTomorrow = new Date()
dayAfterTomorrow.setDate(dayAfterTomorrow.getDate() + 2)
// 格式化日期为 YYYY-MM-DD
const formatDate = (date) => {
const year = date.getFullYear()
const month = String(date.getMonth() + 1).padStart(2, '0')
const day = String(date.getDate()).padStart(2, '0')
return `${year}-${month}-${day}`
}
this.defaultStartDate = formatDate(tomorrow)
this.defaultStartTime = '09:00'
this.defaultEndDate = formatDate(dayAfterTomorrow)
this.defaultEndTime = '09:00'
}
},
methods: {
handleDateTimeConfirm(result) {
// 保存选择的日期时间到本地存储
uni.setStorageSync('selectedDateTime', result)
uni.navigateBack()
}
}
}
</script>
注意事项
- iOS 设备对日期格式有特殊要求,组件已做兼容处理
- 时间选择支持最小间隔设置,默认30分钟
- 选择同一天时,结束时间必须至少比开始时间晚1小时
- 组件会自动处理日期时间的有效性验证