uni-app 日期选择器每月都显示31号

uni-app 日期选择器每月都显示31号

开发环境 版本号 项目创建方式
Windows win10 10.0.19041 HBuilderX
产品分类:uniapp/H5

浏览器平台:Chrome  
浏览器版本:87.0.4280.141 正式版本32位  

### 操作步骤:
官方例子

### 预期结果:
无

### 实际结果:
无

### bug描述:
picker为日期选择器的时候,每月都是31号
2 回复

建议贴上你的代码,我这使用是没有问题的

更多关于uni-app 日期选择器每月都显示31号的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个常见的日期选择器问题,主要是由于picker组件在日期处理上的缺陷导致的。解决方法如下:

  1. 使用uni-app官方推荐的uni-datetime-picker组件替代picker:
<uni-datetime-picker type="date" v-model="date"></uni-datetime-picker>
  1. 如果必须使用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 }
}
  1. 在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)
}
回到顶部