微信小程序的日期选择器的实例详解
程序员文章站
2022-07-06 20:55:28
微信小程序的日期选择器的实例详解
前言:
关于微信小程序中的日期选择器大家用过都会发现有个很大的问题,就是在2月的时候会有31天,没有进行对闰年的判断等各种情况。看了官...
微信小程序的日期选择器的实例详解
前言:
关于微信小程序中的日期选择器大家用过都会发现有个很大的问题,就是在2月的时候会有31天,没有进行对闰年的判断等各种情况。看了官方文档提供的源码后进行了一些修改,测试修复了上面所说的bug!
下面源码:
<!---js---》 const date = new date();//获取系统日期 const years = [] const months = [] const days = [] const bigmonth = [1,3,5,7,8,10,12] //将日期分开写入对应数组 //年 for (let i = 1990; i <= date.getfullyear(); i++) { years.push(i); } //月 for (let i = 1; i <= 12; i++) { months.push(i); } //日 for (let i = 1; i <= 31; i++) { days.push(i); } page({ /** * 页面的初始数据 */ data: { years: years, year: date.getfullyear(), months: months, month: 2, days: days, day: 2, value: [9999, 1, 1], }, showtoask: function() { wx.showtoast({ title: '成功', icon: 'success', duration: 2000 }) }, //判断元素是否在一个数组 contains: function(arr, obj) { var i = arr.length; while(i--) { if (arr[i] === obj) { return true; } } return false; }, setdays: function (day) { const temp = []; for(let i =1; i<=day; i++) { temp.push(i) } this.setdata({ days: temp, }) }, showloading: function () { wx.showloading({ title: '加载中...', }), settimeout(function () { wx.hideloading() },2000) }, //选择滚动器改变触发事件 bindchange: function (e) { const val = e.detail.value; //判断月的天数 const setyear = this.data.years[val[0]]; const setmonth = this.data.months[val[1]]; const setday = this.data.days[val[2]] // console.log(setyear + '年' + setmonth + '月' + setday + '日'); //闰年 if (setmonth === 2) { if (setyear % 4 === 0 && setyear % 100 !== 0) { // console.log('闰年') this.setdays(28); } else { // console.log('非闰年') this.setdays(29); } }else { //大月 if (this.contains(bigmonth, setmonth)){ this.setdays(31) }else { this.setdays(30) } } this.setdata({ year: setyear, month: setmonth, day: setday }) } })
<!---wxml--->
与官方文档是一样的!
<view style='text-align:center;margin-top:30px;'>{{year}}年{{month}}月{{day}}日</view> <picker-view indicator-style="height:50px;" style='width:100%;height:300px;text-align:center' value="{{value}}" bindchange="bindchange"> <picker-view-column> <view wx:for="{{years}}" wx:key="year" style='line=height:50px;'> {{item}}年 </view> </picker-view-column> <picker-view-column> <view wx:for="{{months}}" wx:key="month"> {{item}}月 </view> </picker-view-column> <picker-view-column> <view wx:for="{{days}}" wx:key="day"> {{item}}日 </view> </picker-view-column> </picker-view> </view>
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!