在微信小程序项目开发中,大家往往会遇到日期选择器的需求,分享一下关于日期选择器的代码,可选择具体的日期。
//获取年月日 const date = new Date() const nowYear = date.getFullYear() const nowMonth = date.getMonth() + 1 const nowDay = date.getDate() let daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] // 根据年月 获取当月的总天数 let getDays = function (year, month) { console.log(year, month); if (month === 2) { return ((year % 4 === 0) && ((year % 100) !== 0)) || (year % 400 === 0) ? 29 : 28 } else { return daysInMonth[month - 1] } } // 根据年月日设置当前月有多少天 并更新年月日数组 let setDate = function (year, month, day, _th) { let daysNum = year === nowYear && month === nowMonth ? nowDay : getDays(year, month) day = day > daysNum ? 1 : day let monthsNum = year === nowYear ? nowMonth : 12 let years = [] let months = [] let days = [] let yearIdx = 9999 let monthIdx = 0 let dayIdx = 0 // 重新设置年份列表 for (let i = 1950; i <= nowYear; i++) { years.push(i) } years.map((v, idx) => { if (v === year) { yearIdx = idx } }) // 重新设置月份列表 for (let i = 1; i <= monthsNum; i++) { months.push(i) } months.map((v, idx) => { if (v === month) { monthIdx = idx } }) // 重新设置日期列表 for (let i = 1; i <= daysNum; i++) { days.push(i) } days.map((v, idx) => { if (v === day) { dayIdx = idx } }) _th.setData({ years: years, //年份列表 months: months, //月份列表 days: days, //日期列表 value: [yearIdx, monthIdx, dayIdx], year: year, month: month, day: day }) } Page({ /** * 页面的初始数据 */ data: { years: [], months: [], days: [], year: nowYear, month: nowMonth, day: nowDay, value: [9999, 1, 1] }, /** * 生命周期函数--监听页面加载 */ onl oad: function (options) { setDate(this.data.year, this.data.month, this.data.day, this) }, bindChange: function (e) { let val = e.detail.value setDate(this.data.years[val[0]], this.data.months[val[1]], this.data.days[val[2]], this) } })
<view class="birthBox"> <label>日期</label> <picker-view wx:if="{{years.length>0 && months.length>0 && days.length>0}}" style="width: 100%; height: 180rpx;" value="{{value}}" bindchange="bindChange"> <picker-view-column> <view wx:for="{{years}}" wx:key="index">{{item}}年</view> </picker-view-column> <picker-view-column> <view wx:for="{{months}}" wx:key="index">{{item}}月</view> </picker-view-column> <picker-view-column> <view wx:for="{{days}}" wx:key="index">{{item}}日</view> </picker-view-column> </picker-view> </view>