Page({ /** * 页面的初始数据 */ data: { years: 0, months: 0, days: 0, value: [8, 1, 1],//默认滚动的索引值 }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady: function () { }, /** * 生命周期函数--监听页面显示 */ onShow: function () { }, /** * 生命周期函数--监听页面隐藏 */ onHide: function () { }, /** * 生命周期函数--监听页面卸载 */ onUnload: function () { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh: function () { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom: function () { }, /** * 用户点击右上角分享 */ onShareAppMessage: function () { }, bindDateChangeStart(e) { // valIndex 是获取到的年月日在各自集合中的下标 const valIndex = e.mp.detail.value // console.log(JSON.stringify(e.mp.detail.value)) let year = this.years[valIndex[0]] let month = this.months[valIndex[1]] let day = this.days[valIndex[2]] // 滚动时再动态 通过年和月获取 这个月下对应有多少天 this.getMonth(year, month, day) }, initDatas() { const date = new Date() const nowYear = date.getFullYear() const nowMonth = date.getMonth() + 1 const nowDay = date.getDate() this.year = nowYear this.month = nowMonth this.day = nowDay // 循环前先清空数组 this.years = [] this.months = [] for (let i = nowYear - 30; i <= nowYear; i++) { this.years.push(i) } // 设置月份列表 for (let i = 1; i <= 12; i++) { this.months.push(i) } // 初始化当前年月 if (this.birthday && this.birthday.indexOf('-') != -1) { var birthday_obj = this.birthday.split('-'); this.getMonth(parseInt(birthday_obj[0]), parseInt(birthday_obj[1]), parseInt(birthday_obj[2])) } else { this.getMonth(nowYear, nowMonth, nowDay) } }, getMonth(year, month, day) { let daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] let dayNum = 0 // 通过年和月获取这个月份下有多少天 if (month === 2) { // 闰年 dayNum = ((year % 4 === 0) && ((year % 100) !== 0)) || (year % 400 === 0) ? 29 : 28 } else { dayNum = daysInMonth[month - 1] } this.days = [] for (let i = 1; i <= dayNum; i++) { this.days.push(i) } // 初始 选中年月日对应下标 let yearIdx = 0 let monthIdx = 0 let dayIdx = 0 // 获取滚动后 年月日对应的下标 this.years.map((v, idx) => { if (v === year) { yearIdx = idx } }) this.months.map((v, idx) => { if (v === month) { monthIdx = idx } }) this.days.map((v, idx) => { if (v === day) { dayIdx = idx } }) // 重置滚动后 年月日 的下标 this.value = [yearIdx, monthIdx, dayIdx] // 赋值年月日 this.year = this.years[yearIdx] this.month = this.months[monthIdx] > 9 ? this.months[monthIdx] : '0' + this.months[monthIdx] this.day = this.days[dayIdx] > 9 ? this.days[dayIdx] : '0' + this.days[dayIdx] }, })