小程序 年月日时分 插件

index.wxml:

    <view class='address'>

  <template is="mars" data="{{selectRole:'A',step:0}}"></template>

  <pickerYMDHM bind:onPickerChange="onPickerChange4" date="{{endedTime}}"></pickerYMDHM>

</view>

(图片仅为看得更清晰一点)

 

index.js

 // 日历组件 ss

  onPickerChange3: function (e) {

    console.log(e);

    this.setData({

      startTime: e.detail.dateString

    })

  },

  onPickerChange4: function (e) {

    console.log(e);

    this.setData({

      endedTime: e.detail.dateString

    })

  },

  toDouble:function(num) {

    if(num >= 10) {//大于10

      return num;

    } else {//0-9

      return '0' + num

    }

    },

  getToday:function() {

    let date = new Date();

    let year = date.getFullYear();

    let month = date.getMonth() + 1;

    let day = date.getDate();

    return year + '-' + this.toDouble(month) + '-' + this.toDouble(day)

  },

  onLoad:function(){

    let dayTime= this.getToday();

    let dayHour = "18:00";

    let endedTime1 = dayTime + " " + dayHour;

    this.setData({

      endedTime: endedTime1

    })

  },

  // 日历组件  end

 

index.json:

//引入

 "usingComponents": {

    "pickerYMDHM":"/components/pickerYMDHM/pickerYMDHM"

  },

 

components组件下的:

pick.wxml:

<!--components/pickerYMDHM/pickerYMDHM.wxml-->

<view class="container">

  <picker mode="multiSelector" bindchange="pickerChange" bindcolumnchange="pickerColumnChange" bindcancel ="pickerCancel" value="{{pickerIndex}}" range="{{pickerArray}}" range-key="{{'name'}}">

    <view class='showFont'>

      {{date}}

    </view>

  </picker>

</view>

 

pick.css:

.showFont{//自行调整

  width: 100%;

  font-size: 26rpx;

  /* width:490rpx; */

  /* height:110rpx; */

  /* line-height:110rpx; */

}

 

pick.js:

 

Component({

  /**

   * 组件的属性列表

   */

  properties: {

    date: {            // 属性名

      type: null,     // 类型(必填),目前接受的类型包括:String, Number, Boolean, Object, Array, null(表示任意类型)

      value: ""     // 属性初始值(可选),如果未指定则会根据类型选择一个

    }

  },

 

  /**

   * 组件的初始数据

   */

  data: {

    pickerArray: [],//日期控件数据list

    pickerIndex: [],//日期控件选择的index

    chooseIndex: [],//日期控件确认选择的index

    chooseArray: [],//日期控件确认选择后的list

    dateString: '',//页面显示日期

  },

 

  /**

   * 组件的方法列表

   */

  methods: {

    _onInit() {

      let date = new Date();

      if (this.data.date != "") {

        let str = this.data.date;

        str = str.replace(/-/g, "/");

        date = new Date(str);

      }

      let pickerArray = this.data.pickerArray;

      console.log(date.getFullYear());

      //默认选择3年内

      let year = [];

      for (let i = date.getFullYear() - 1; i <= date.getFullYear() + 5; i++) {

        year.push({ id: i, name: i + "年" });

      }

      // console.log(year);

      let month = [];

      for (let i = 1; i <= 12; i++) {

        month.push({ id: i, name: i + "月" });

      }

      // console.log(month);

      let dayNum = this._getNumOfDays(date.getFullYear(), date.getMonth() + 1);

      let day = [];

      for (let i = 1; i <= dayNum; i++) {

        day.push({ id: i, name: i + "日" });

      }

      // console.log(day);

      let time = [];

      for (let i = 0; i <= 23; i++) {

        if (i < 10) {

          time.push({ id: i, name: "0" + i + "时" });

        } else {

          time.push({ id: i, name: i + "时" });

        }

      }

      // console.log(time);

      let division = [];

      for (let i = 0; i <= 59; i++) {

        if (i < 10) {

          division.push({ id: i, name: "0" + i + "分" });

        } else {

          division.push({ id: i, name: i + "分" });

        }

      }

      // console.log(division);

      pickerArray[0] = year;

      pickerArray[1] = month;

      pickerArray[2] = day;

      pickerArray[3] = time;

      pickerArray[4] = division;

      let mdate = {

        date: date,

        year: date.getFullYear() + '',

        month: date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1 + '',

        day: date.getDate() < 10 ? '0' + date.getDate() : date.getDate() + '',

        time: date.getHours() < 10 ? '0' + date.getHours() : date.getHours() + '',

        division: date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() + ''

      }

      mdate.dateString = mdate.year + '-' + mdate.month + '-' + mdate.day + ' ' + mdate.time + ':' + mdate.division;

      this.setData({

        pickerArray,

        pickerIndex: [1, date.getMonth(), date.getDate() - 1, date.getHours(), date.getMinutes()],

        chooseIndex: [1, date.getMonth(), date.getDate() - 1, date.getHours(), date.getMinutes()],

        chooseArray: pickerArray,

        dateString: mdate.dateString

      })

      // console.log(date);

      // this.triggerEvent('onPickerChange', mdate);

      // console.log(this.data.pickerArray);

      // console.log(this._getNumOfDays(2018, 10));

    },

    /**

     * 

     * 获取本月天数

     * @param {number} year 

     * @param {number} month 

     * @param {number} [day=0] 0为本月0最后一天的

     * @returns number 1-31

     */

    _getNumOfDays(year, month, day = 0) {

      return new Date(year, month, day).getDate()

    },

    pickerChange: function (e) {

      // console.log('picker发送选择改变,携带值为', e.detail.value)

      let indexArr = e.detail.value;

      // console.log(this.data.pickerArray[0][indexArr[0]].id + "\n" + this.data.pickerArray[1][indexArr[1]].id + "\n" + this.data.pickerArray[2][indexArr[2]].id);

      const year = this.data.pickerArray[0][indexArr[0]].id;

      const month = this.data.pickerArray[1][indexArr[1]].id;

      const day = this.data.pickerArray[2][indexArr[2]].id;

      const time = this.data.pickerArray[3][indexArr[3]].id;

      const division = this.data.pickerArray[4][indexArr[4]].id;

      let date = {

        date: new Date(year + '-' + month + '-' + day + ' ' + time + ':' + division),

        year: year + '',

        month: month < 10 ? '0' + month : month + '',

        day: day < 10 ? '0' + day : day + '',

        time: time < 10 ? '0' + time : time + '',

        division: division < 10 ? '0' + division : division + ''

      }

      date.dateString = date.year + '-' + date.month + '-' + date.day + ' ' + date.time + ':' + date.division;

      // console.log(date);

      this.setData({

        chooseIndex: e.detail.value,

        chooseArray: this.data.pickerArray,

        dateString: date.dateString

      })

      this.triggerEvent('onPickerChange', date);

    },

    pickerColumnChange: function (e) {

      // console.log('修改的列为', e.detail.column, ',值为', e.detail.value);

      var data = {

        pickerArray: this.data.pickerArray,

        pickerIndex: this.data.pickerIndex

      };

      data.pickerIndex[e.detail.column] = e.detail.value;

      if (e.detail.column == 1) {

        let dayNum = this._getNumOfDays(data.pickerArray[0][data.pickerIndex[0]].id, e.detail.value + 1);

        let day = [];

        for (let i = 1; i <= dayNum; i++) {

          day.push({ id: i, name: i + "日" });

        }

        if (dayNum < data.pickerIndex[2] + 1) {

          data.pickerIndex[2] = dayNum - 1;

        }

        data.pickerArray[2] = day;

      }

      this.setData(data);

    },

    pickerCancel: function (e) {

      // console.log("取消");

      this.setData({

        pickerIndex: this.data.chooseIndex,

        pickerArray: this.data.chooseArray

      })

    },

  },

  // 以下是旧式的定义方式,可以保持对 <2.2.3 版本基础库的兼容

  attached() {

    // 在组件实例进入页面节点树时执行

    // 在组件实例进入页面节点树时执行

    // this._onInit();

  },

  ready() {

    console.log('进入ready外层节点=', this.data.date);

    this._onInit();

  },

  // 以下为新方法 >=2.2.3

  lifetimes: {

    attached() {

      // 在组件实例进入页面节点树时执行

      // this._onInit();

    },

    detached() {

      // 在组件实例被从页面节点树移除时执行

    },

    ready() {

      console.log('进入ready节点=', this.data.date);

      this._onInit();

    }

  }

})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 微信小程序中的Picker组件可以实现选择年月日时分秒的功能。 首先,我们需要在小程序的页面中引入Picker组件,并在wxml文件中定义一个Picker组件的容器,例如: ```html <view class="picker-container"> <picker mode="date" bindchange="onDateChange"> <view class="picker-content">{{selectedDate}}</view> </picker> </view> ``` 上述代码中,使用`picker`标签定义了一个Picker组件,设置`mode`属性为`date`表示选择日期。`bindchange`属性绑定了一个事件处理函数`onDateChange`,用于在选择日期时触发相应的操作。`picker`标签内的`view`标签可以用来显示选择的日期。 接下来,在小程序的页面对应的js文件中,我们需要定义`onDateChange`事件处理函数,并在函数中处理年月日时分秒的选择。例如: ```javascript Page({ data: { selectedDate: '' }, onDateChange(e) { const value = e.detail.value; this.setData({ selectedDate: value }); // 在这里可以继续添加代码处理选中的年月日时分秒 } }); ``` 上述代码中,`onDateChange`事件处理函数获取了选择的日期信息,将其保存在`selectedDate`数据中,然后可以在函数体内继续添加代码,处理选中的年月日时分秒。 总结起来,通过Picker组件的引入和事件处理函数的编写,我们可以在微信小程序中实现年月日时分秒的选择功能。 ### 回答2: 微信小程序的picker组件是一种方便用户选择日期和时间的工具。其中,年月日时分秒是picker所支持的不同选择项。 在微信小程序中使用picker组件,我们可以设置mode属性来定义选择器的模式。为了选择年月日时分秒,我们可以将mode属性设置为"datetime"。 在picker的使用过程中,我们可以通过设置start和end属性来限制可选择的日期和时间范围。例如,我们可以设置start为当前日期时间,end为未来某个日期时间,以确保用户只能选择当前时间以后的日期和时间。 通过以上设置,当用户点击picker组件时,会弹出一个滚动选择器,分为年、月、日、时、分和秒六个滚动列表。用户可以通过滑动这些列表来选择所需的日期和时间。 选择器的每个滚动列表默认都有一个固定的范围,比如年份范围通常为当前年份加减10年。用户可以通过滚动列表来选择他们想要的年、月、日、时、分和秒。 当用户完成选择后,我们可以通过绑定picker的change事件来获取用户所选的日期和时间。在change事件的回调函数中,我们可以通过event.detail.value来获取用户选择的日期和时间值。 综上所述,微信小程序的picker组件可以方便地实现年月日时分秒的选择功能。通过设置适当的属性和监听change事件,我们可以根据用户的选择来进行相应的操作。无论是用于预约、倒计时或者其他时间相关的功能,picker组件都能够满足用户的需求。 ### 回答3: 微信小程序中的picker组件可以用来选择年月日时分秒。在使用picker组件时,我们可以通过设置mode属性为'date'来选择年月日,设置为'time'来选择时分秒,还可以设置为'dateTime'来选择年月日时分秒。 当设置mode属性为'date'时,picker会显示一个日期选择器,我们可以通过设置start和end属性来限制可以选择的日期范围。例如,设置start为'2010-01-01',end为'2022-12-31',用户只能在这个日期范围内进行选择。选择的日期将会以字符串的形式返回。 当设置mode属性为'time'时,picker会显示一个时间选择器,可以选择时分秒。同样,我们可以通过设置start和end属性来限制可选择的时间范围。选择的时间将会以字符串的形式返回。 当设置mode属性为'dateTime'时,picker会显示一个日期时间选择器,可以选择年月日时分秒。同样,我们可以通过设置start和end属性来限制可选择的日期时间范围。选择的日期时间将会以字符串的形式返回。 在使用picker时,可以通过bindchange属性来监听用户选择的值的变化,从而执行相应的代码逻辑。例如,当选择器的值发生变化时,可以将选择的值存储在数据中,并更新页面的展示内容。 总之,微信小程序的picker组件提供了便捷的年月日时分秒选择功能,在开发时可以根据实际需求设置mode属性,并通过监听用户选择的值的变化来处理相应的业务逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值