小程序时间左右点击切换前后,点击picker选择指定日期切换前后

本文介绍了如何在微信小程序中使用Picker组件实现日期的前后切换,包括按天、月、年,并通过click事件和setData方法更新显示日期。作者分享了完整的代码示例和关键事件处理函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

微信小程序前一天后一天、前一月后一月、前一年后一年,加点击picker选择指定日期开始切换前后

<view class="box">
  <view bindtap='btncud' class='box1'>前一天</view>
  <view class='box2'>
    <picker class='deta' mode="date" value="{{date}}"  bindchange="bindDateChange">
      <view style="text-align: center;">{{date}}</view>
    </picker>
  </view>
  <view bindtap='btnadd' class='box1'>后一天</view>
</view>

<view class="box" style="margin-top: 50px;">
  <view bindtap='btncud2' class='box1'>前一月</view>
  <view class='box2'>
    <picker class='deta' mode="date" fields="month" value="{{dateyue}}"  bindchange="bindDateChange2">
      <view style="text-align: center;">{{dateyue}}</view>
    </picker>
  </view>
  <view bindtap='btnadd2' class='box1'>后一月</view>
</view>

<view class="box" style="margin-top: 50px;">
  <view bindtap='btncud3' class='box1'>前一年</view>
  <view class='box2'>
    <picker class='deta' mode="date" fields="year" value="{{datenian}}"  bindchange="bindDateChange3">
      <view style="text-align: center;">{{datenian}}</view>
    </picker>
  </view>
  <view bindtap='btnadd3' class='box1'>后一年</view>
</view>
JS代码
data:{
	date: "",//日的时间默认
    dateyue: "",//月的时间默认
    datenian: "",//年的时间默认
}

日月年点击事件
// 日
bindDateChange: function (e) {
  this.setData({
    date: e.detail.value
  })
},
// 月
bindDateChange2: function (e) {
  this.setData({
    dateyue: e.detail.value
  })
},
// 年
bindDateChange3: function (e) {
  this.setData({
    datenian: e.detail.value
  })
},

前一天后一天点击事件
// 前一天 
btncud: function () {
  let Arr = this.data.date.split("-");
  let now = new Date(Number(Arr['0']), (Number(Arr['1']) - 1), Number(Arr['2']))
  now.setDate(now.getDate() - 1)
  now = this.formatTime(now)
  this.setData({
    date: now
  })
},
// 后一天
btnadd: function () {
  let Arr = this.data.date.split("-");
  let now = new Date(Number(Arr['0']), (Number(Arr['1']) - 1), Number(Arr['2']))
  now.setDate(now.getDate() + 1)
  now = this.formatTime(now)
  this.setData({
    date: now
  })
},

前一月后一月点击事件
// 前一月
btncud2: function () {
  let Arr2 = this.data.dateyue.split("-");
  let now2 = new Date(Number(Arr2['0']), (Number(Arr2['1']) - 1))
  now2.setDate(now2.getDate() - 1)
  now2 = this.formatTime2(now2)
  this.setData({
    dateyue: now2
  })
},
// 后一月
btnadd2: function () {
  let Arr2 = this.data.dateyue.split("-");
  let now2 = new Date(Number(Arr2['0']), (Number(Arr2['1'])))
  now2.setDate(now2.getDate() + 1)
  now2 = this.formatTime2(now2)
  this.setData({
    dateyue: now2
  })
},

前一年后一年点击事件
// 前一年
btncud3: function () {
  let now3 = this.data.datenian - 1
  this.setData({
    datenian: now3
  })
},
// 后一年
btnadd3: function () {
  let now3 = Number(this.data.datenian) + Number(1)
  this.setData({
    datenian: now3
  })
},

日月年时间格式化
// 格式化日时间
  formatTime(date) {
    var year = date.getFullYear();
    var month = date.getMonth() + 1
    month = month > 10 ? month : '0' + month;
    var day = date.getDate()
    day = day > 9 ? day : '0' + day;
    return year + '-' + month + '-' + day;
  },
  // 格式化月时间
  formatTime2(dateyue) {
    var year = dateyue.getFullYear();
    var month = dateyue.getMonth() + 1
    month = month > 9 ? month : '0' + month;
    return year + '-' + month ;
  },
  // 格式化年时间
  formatTime3(datenian) {
    var year = datenian.getFullYear();
    return year;
  },


在挂载的生命周期里运行回调时间函数
onReady: function () {
  let now = new Date();
  let nowdate = this.formatTime(now);
  this.setData({
    date: nowdate
  })

  let now2 = new Date();
  let nowdate2 = this.formatTime2(now2);
  this.setData({
    dateyue: nowdate2
  })

  let now3 = new Date();
  let nowdate3 = this.formatTime3(now3);
  this.setData({
    datenian: nowdate3
  })
},
样式随便写个主要是功能实现
.box{
  display: flex;
  width: 100%;
}
.box1{
  width: 45%;
}
.box2{
  width: 55%;
}

效果图
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

找了不少例子但是总是不全最后自己汇总整合了一下,希望能帮到有需要的你

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值