uni-app 日期选择器每月都显示31号
uni-app 日期选择器每月都显示31号
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | win10 10.0.19041 | HBuilderX |
产品分类:uniapp/H5
浏览器平台:Chrome
浏览器版本:87.0.4280.141 正式版本32位
### 操作步骤:
官方例子
### 预期结果:
无
### 实际结果:
无
### bug描述:
picker为日期选择器的时候,每月都是31号
2 回复
这是一个常见的日期选择器问题,主要是由于picker组件在日期处理上的缺陷导致的。解决方法如下:
- 使用uni-app官方推荐的uni-datetime-picker组件替代picker:
<uni-datetime-picker type="date" v-model="date"></uni-datetime-picker>
- 如果必须使用picker组件,可以通过自定义处理:
// 生成正确的日期数据
getDateRange(startYear, endYear) {
const years = []
const months = []
const days = []
for (let i = startYear; i <= endYear; i++) {
years.push(i)
}
for (let i = 1; i <= 12; i++) {
months.push(i)
}
// 根据年月计算实际天数
const getDays = (year, month) => {
return new Date(year, month, 0).getDate()
}
return { years, months, getDays }
}
- 在onChange事件中动态更新天数:
onChange(e) {
const [year, month] = e.detail.value
const days = this.getDateRange().getDays(year, month)
this.days = Array.from({length: days}, (_, i) => i + 1)
}