微信小程序之pinker组件使用以及自动进行相减日期

news/2024/7/20 2:58:55 标签: 小程序, javascript

首先,我这里使用pinker组件代码为

 <view class="section">
      <view class="section__title">开始时间</view>
      <picker mode="date" value="{{date}}" start="{{startTime}}" end="2020-09-01" bindchange="bindDateChange">
        <view class="picker">
          <text>{{date}}</text>
          <image src="/images/three.png"></image>
        </view>
      </picker>
    </view>

    <view class="section">
      <view class="section__title">结束时间</view>
      <picker mode="date" value="{{date2}}" start="{{date}}" end="2050-09-01" bindchange="bindDate2Change">
        <view class="picker">
          <text>{{date2}}</text>
          <image src="/images/three.png"></image>
        </view>
      </picker>
    </view>

在这里先声明一下,mode属性有五个,我这里用到的是日期选择器–data,开始时间的默认选择时间为当前日期,通过js时时获取当天的日期

mode的五个属性
获取当天日期的代码为:

    //获取当前时间戳  
    var timestamp = Date.parse(new Date());
    timestamp = timestamp / 1000;
    console.log("当前时间戳为:" + timestamp);

    //获取当前时间  
    var n = timestamp * 1000;
    var date = new Date(n);
    //年  
    var Y = date.getFullYear();
    //月  
    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
    //日  
    var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
    //天
    var H = date.getHours(); 
    //时 
    var m = date.getMinutes(); 
    //分  
    var time = Y + "-" + M + "-" + D;
    var time2 = Y + "-" + M + "-" + D + "-" + H + ":" + m;
    console.log(time)
    console.log(time2)

其次,pinker组件选择的开始时间与结束时间,通过js来相减得到相差的日期

// 获取开始时间、结束时间,相减
    var start_date = new Date(this.data.date.replace(/-/g, "/"));
    var end_date = new Date(this.data.date2.replace(/-/g, "/"));
    var days = end_date.getTime() - start_date.getTime();
    var day = parseInt(days / (1000 * 60 * 60 * 24));
    console.log(day);
    if (day > 0) {
      this.setData({
        num: day
      })
    } else if (day == 0)  {
      this.setData({
        num: 1
      })
    } else if (day < 0)  {
      this.setData({
        date2:''
      })
    }
  },

这里的知识点是,replace(/-/g, “/”)一般用于格式化日期,如2020-5-5 格式化为 2020/5/5,然后js 可以直接操作这个时间,/g 代表全局,所有的- 都替换。

实现思路:把日期格式化再转成毫秒数,用结束日期的毫秒数减去开始日期的毫秒数,最终转换成天数。

然后再wxml页面的计算时间差的代码为:

   <view class="infoDiv">
      <text>请假时长</text>
      <view wx:if="{{date2&&date}}">
        <input auto-focus placeholder="" type="text" value="{{num+'天'}}" disabled="disabled" bindchange="num_data" />
      </view>
      <view wx:else="">
        <input auto-focus placeholder="" type="text" value="" bindchange="num_data" disabled="disabled" />
      </view>

    </view>

这里通过wx:if来判断日期相差数显示对应的效果。在js传数据的时候,通过+“”来拼接变量,如图中我在计算出日期后,自动加上单位:天。{{num+“天”}}

实现效果图为:
在这里插入图片描述
在这里插入图片描述

好了,这就是简单的使用微信小程序中的自定义组件pinker进行时间选择以及自动进行日期相减。


http://www.niftyadmin.cn/n/1769740.html

相关文章

微信小程序之一个盒子的padding部分的背景着色问题

今天给一个有padding的盒子&#xff0c;点击它后会添加背景色时候&#xff0c;发现并不能铺满整个盒子&#xff0c;搜索一下padding部分设置属性是不可行的&#xff0c;因为margin和padding只是控制内外边距的&#xff0c;他们本身就是个属性&#xff0c;所以无法在他们上面设置…

微信小程序之view多选

在微信小程序里面不使用checkbox怎么实现view的多选 wxml文件 <block wx:for"{{itemList}}" wx:key"id"><view classitem_container bindtapitemSelected data-index{{index}}><image classselect_icon src"{{item.isSelected?/imag…

VUE项目中main.js、App.vue、import...from...等重要文件的作用和意义

一、main.js 1、 main.js 程序入口文件&#xff0c;初始化vue实例&#xff0c;并引入使用需要的插件和各种公共组件. import Vue from vue import App from ./App import router from ./router import Less from Less Vue.config.productionTip false/* eslint-disable no-new…

a标签注意的那些事

javascript: 是一个伪协议&#xff0c;它是表示在触发默认动作时&#xff0c;执行一段JavaScript代码。而 javascript:; 表示什么都不执行&#xff0c;这样点击时就没有任何反应。 href"javascript:;"就是去掉a标签的默认行为&#xff0c;它跟href"javascript:…

微信小程序之自定义顶部导航栏

首先创建一个components的模板组件文件夹&#xff0c;里面放上我的顶部自定义模板。如图&#xff1a; 写好自定义组件后&#xff0c;记得在每个页面的.json中加上&#xff1a; {"usingComponents": {"navbar": "/components/navbar/navbar" …

微信小程序之自定义tabBar及切换不同版本显示不同tabBar

今天&#xff0c;我在写页面的时候&#xff0c;碰到需要切换不同身份&#xff08;两个版本&#xff09;时候底部tabBar显示不同&#xff0c;我的解决方法是&#xff1a; 首先在components&#xff08;组件模板&#xff09;下新建一个tabBar.wxml: <template name"tab…

微信小程序之页面中关于聊天框三角形的制作和使用

文章目录方法一&#xff1a;使用三角形的图片&#xff0c;定位在文本的左侧。方法二&#xff1a;通过在页面中制作一个白色背景的正方形&#xff0c;然后对它进行45度旋转即可实现。方法三&#xff1a;直接制作一个三角形我最近需要写一个消息通知的页面&#xff0c;需要用到聊…

有关Android studio 模拟器中输入中文

新手接触Android studio时候&#xff0c;碰到了模拟器它系统里不提供中文输入&#xff0c;于是我在自己的电脑里下载好中文输入法的apk&#xff0c;然后移动模拟器中即可下载好&#xff0c;接下来就是和正常手机一样设置输入法了。 效果图&#xff1a; 下载链接&#xff1a;ht…