# neo-datetime-pro 高级日期时间选择器,支持日期/时间/范围选择、快捷选项、禁用规则等功能。 ## 特性 - 单日期选择 - 日期范围选择(开始-结束) - 时间选择(时/分/秒) - 日期+时间组合选择 - 快捷选项(今天、最近7天、本月等) - 禁用日期规则(自定义函数、最小/最大日期) - 周序号显示 - 国际化支持(中文/英文) - 移动端友好的底部弹出交互 - 全平台兼容 ## 兼容性 | Vue2 | Vue3 | H5 | App | 微信小程序 | 支付宝小程序 | 百度小程序 | 字节小程序 | QQ小程序 | |------|------|----|----|--------|----------|--------|--------|---------| | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ## 安装 在 HBuilderX 中右键 `uni_modules` 目录,选择 `从插件市场导入`,搜索 `neo-datetime-pro` 安装。 或者直接复制 `neo-datetime-pro` 目录到项目的 `uni_modules` 目录下。 ## 快速开始 ### 基础用法 ```vue ``` ### 日期范围选择 ```vue ``` ### 日期时间选择 ```vue ``` ### 时间选择 支持根据 `format` 自动显示时间部分: ```vue ``` ### 快捷选项 ```vue ``` ### 禁用日期 ```vue ``` ### 最小/最大日期限制 ```vue ``` ### 使用服务器时间 ```vue ``` ## API ### Props | 参数 | 类型 | 默认值 | 说明 | |------|------|--------|------| | modelValue / v-model | String / Array / Date | - | 绑定值 | | type | String | date | 选择器类型:date/datetime/time/daterange/datetimerange | | format | String | YYYY-MM-DD | 日期/时间格式,时间选择器会根据 format 智能显示列:
• `YYYY-MM-DD` 日期
• `YYYY-MM-DD HH:mm:ss` 日期时间
• `HH:mm:ss` 时分秒
• `HH:mm` 仅时分
• `HH` 仅小时 | | placeholder | String | 请选择 | 占位文本 | | disabled | Boolean | false | 是否禁用 | | readonly | Boolean | false | 是否只读 | | clearable | Boolean | true | 是否显示清空按钮 | | shortcuts | Array | [] | 快捷选项 | | disabledDate | Function | - | 禁用日期函数,返回 true 表示禁用 | | minDate | String / Date | - | 最小日期 | | maxDate | String / Date | - | 最大日期 | | showWeekNumber | Boolean | false | 是否显示周序号 | | locale | String | zh | 语言:zh/en | | startOfWeek | Number | 0 | 周起始日:0(周日)- 6(周六) | | currentTime | Date / String / Number | null | 当前时间(支持从接口获取),未传入时使用客户端时间 | ### Events | 事件名 | 参数 | 说明 | |--------|------|------| | change | value | 选中值改变时触发 | | confirm | value | 点击确定按钮时触发 | | clear | - | 点击清空按钮时触发 | ### Shortcuts 快捷选项格式 ```javascript [ { text: '今天', value: 'today' }, { text: '昨天', value: 'yesterday' }, { text: '最近7天', value: 'last7days' }, { text: '最近30天', value: 'last30days' }, { text: '本周', value: 'thisweek' }, { text: '本月', value: 'thismonth' }, // 自定义快捷选项 { text: '自定义', value: () => { return ['2025-01-01', '2025-12-31'] } } ] ``` ## 使用建议 1. **日期格式**:支持常见格式如 `YYYY-MM-DD`、`YYYY-MM-DD HH:mm:ss` 等 2. **智能时间格式**:时间选择器会根据 `format` 自动显示对应的列 - `HH:mm:ss` 显示时/分/秒三列 - `HH:mm` 显示时/分两列 - `HH` 仅显示小时一列 3. **范围选择**:`daterange` 和 `datetimerange` 模式下,v-model 绑定数组 `[startDate, endDate]` 4. **禁用规则**:`disabledDate` 函数接收日期对象,返回 `true` 表示禁用该日期 5. **快捷选项**:支持内置值(today、yesterday等)和自定义函数 6. **移动端优化**:底部弹出交互,触摸友好 ## 常见问题 ### 1. 如何禁用周末? ```javascript disabledDate(date) { const day = date.getDay() return day === 0 || day === 6 // 0=周日, 6=周六 } ``` ### 2. 如何设置默认值? ```javascript data() { return { date: '2025-10-30' // 字符串格式 // 或 date: new Date() // Date 对象 } } ``` ### 3. 如何获取时间戳? ```javascript @change="handleChange" methods: { handleChange(value) { const timestamp = new Date(value).getTime() console.log(timestamp) } } ``` ## 许可 MIT License ## 更新日志 见 [changelog.md](./changelog.md)