Cube-UI 时间选择器 TimePicker 组件深度解析

Cube-UI 时间选择器 TimePicker 组件深度解析

cube-ui :large_orange_diamond: A fantastic mobile ui lib implement by Vue cube-ui 项目地址: https://gitcode.com/gh_mirrors/cu/cube-ui

组件概述

TimePicker 是 Cube-UI 提供的一个功能强大的时间选择组件,它可以帮助开发者快速实现移动端的时间选择功能。该组件支持多种配置选项,能够满足不同场景下的时间选择需求。

核心功能特性

  1. 灵活的时间选择:支持选择未来几天内的时间点
  2. 自定义步长:可设置分钟数的步长(如每10分钟一个选项)
  3. 时间范围限制:支持设置最小和最大可选时间
  4. 格式化输出:可自定义选择时间的显示格式
  5. 多语言支持:日期文案可自定义

基础使用教程

1. 基本用法示例

<template>
  <cube-button @click="showTimePicker">选择时间</cube-button>
</template>

<script>
export default {
  methods: {
    showTimePicker() {
      this.$createTimePicker({
        showNow: true,
        minuteStep: 5,
        delay: 15,
        onSelect: (selectedTime, selectedText, formatedTime) => {
          console.log('选择的时间戳:', selectedTime)
          console.log('显示的文本:', selectedText)
          console.log('格式化时间:', formatedTime)
        },
        onCancel: () => {
          console.log('用户取消了选择')
        }
      }).show()
    }
  }
}
</script>

参数说明

  • showNow: 是否显示"现在"选项
  • minuteStep: 分钟间隔(这里设置为5分钟)
  • delay: 最小可选时间与当前时间的分钟差(这里设置为15分钟后)

2. 日期选项配置

this.$createTimePicker({
  day: {
    len: 5,  // 显示5天的日期
    filter: ['今天', '明天'],  // 自定义前两天的显示文本
    format: 'M月d日'  // 日期格式化
  },
  // 其他配置...
})

日期配置详解

  • len: 控制显示的日期数量
  • filter: 自定义特定日期的显示文本
  • format: 日期格式化字符串

高级功能详解

1. 时间格式化输出

从1.10.0版本开始,支持自定义选择时间的输出格式:

this.$createTimePicker({
  format: 'hh:mm',  // 只显示小时和分钟
  // 其他配置...
})

2. 分钟步长高级配置

1.10.5+版本支持更精细的分钟步长控制:

this.$createTimePicker({
  minuteStep: {
    rule: 'ceil',  // 取整规则:向上取整
    step: 15       // 15分钟一个间隔
  },
  // 其他配置...
})

取整规则选项

  • floor: 向下取整
  • ceil: 向上取整
  • round: 四舍五入

3. 时间范围限制

1.12.6+版本支持设置最小和最大可选时间:

// 设置最小可选时间(2小时20分钟前)
this.$createTimePicker({
  min: +new Date() - (2 * 60 + 20) * 60 * 1000
})

// 设置最大可选时间(2天2小时20分钟后)
this.$createTimePicker({
  max: +new Date() + ((2 * 24 + 2) * 60 + 20) * 60 * 1000
})

组件API详解

Props配置项

| 配置项 | 类型 | 说明 | 默认值 | |-------|------|------|-------| | day | Object | 日期配置 | { len: 3, filter: ['今日'], format: 'M月D日' } | | minuteStep | Number/Object | 分钟步长 | 10 | | delay | Number | 最小可选时间与当前的分钟差 | 15 | | min | Date/Number | 最小可选时间 | null | | max | Date/Number | 最大可选时间 | null | | format | String | 时间格式化字符串 | 'YYYY/M/D hh:mm' |

事件说明

  • select: 确认选择时触发,返回选择的时间戳、显示文本和格式化时间
  • change: 滚动选择器时触发,返回当前滚动列和选中索引
  • cancel: 取消选择时触发

实例方法

  • setTime(timestamp): 手动设置显示的时间
  • show(): 显示选择器
  • hide(): 隐藏选择器

最佳实践建议

  1. 性能优化:对于频繁使用的场景,可以创建一次选择器实例并复用
  2. 用户体验:合理设置minuteStep,避免选项过多影响选择效率
  3. 国际化:通过day.filterformat实现多语言支持
  4. 错误处理:当设置的时间范围无效时,应有合理的fallback机制

常见问题解答

Q: 如何实现只选择未来时间? A: 设置min为当前时间即可:

min: new Date()

Q: 为什么设置了minuteStep但选项不符合预期? A: 检查是否同时设置了minmax,这些配置会影响最终的可选时间范围

Q: 如何自定义"现在"按钮的文本? A: 从1.9.0开始,showNow支持对象配置:

showNow: {
  text: '立即'
}

通过本文的详细讲解,开发者应该能够全面掌握Cube-UI TimePicker组件的使用方法,并能在实际项目中灵活应用各种高级功能。

cube-ui :large_orange_diamond: A fantastic mobile ui lib implement by Vue cube-ui 项目地址: https://gitcode.com/gh_mirrors/cu/cube-ui

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸莹子Shelley

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值