微信小程序时分秒选择picker

目录

介绍

创建js文件

wxml使用

js内使用

回显

结语


介绍

微信小程序picker只有时分选择,但我们工作中可能会用到时分秒选择

创建js文件

创建辅助文件:dateTimePicker.js

//设置日期的两位数显示
function withData(param) {
    return param < 10 ? '0' + param : '' + param;
  }
  function getLoopArray(start, end) {
    var start = start || 0;
    var end = end || 1;
    var array = [];
    for (var i = start; i <= end; i++) {
      array.push(withData(i));
    }
    return array;
  }
  function getMonthDay(year, month) {
    var flag = year % 400 == 0 || (year % 4 == 0 && year % 100 != 0), array = null;
    switch (month) {
      case '01':
      case '03':
      case '05':
      case '07':
      case '08':
      case '10':
      case '12':
        array = getLoopArray(1, 31)
        break;
      case '04':
      case '06':
      case '09':
      case '11':
        array = getLoopArray(1, 30)
        break;
      case '02':
        array = flag ? getLoopArray(1, 29) : getLoopArray(1, 28)
        break;
      default:
        array = '月份格式不正确,请重新输入!'
    }
    return array;
  }
  function getNewDateArry() {
    // 当前时间的处理
    var newDate = new Date(),
    // 年月日
    // var year = withData(newDate.getFullYear()),
    //   mont = withData(newDate.getMonth() + 1),
    //   date = withData(newDate.getDate()),
    // 时分秒
      hour = withData(newDate.getHours()),
      minu = withData(newDate.getMinutes()),
      seco = withData(newDate.getSeconds());
    return [hour, minu, seco];
  }
  /**
   *  startYear: 开始的年份,进行年份的范围指定
   *  endYear:   结束的年份,进行年份的范围指定
   *  date:      年份日期
   *  1、如果不传参数,默认显示当前日期和时间
   *  2、如果只需要date参数,将startYear和endYear设置为空字符串
   */
    //需要年月日的可以加function dateTimePicker(startYear,endYear,date)
  function dateTimePicker(date) {
    // 返回默认显示的数组和联动数组的声明
    // 年月日 时分秒 var dateTime = [], dateTimeArray = [[], [], [], [], [], []];
    var dateTime = [], dateTimeArray = [[], [], []];
    // var start = startYear || 1978;
    // var end = endYear || 2100;
    // 默认开始显示数据 
    // var defaultDate = date ? [...date.split(' ')[0].split('-'), ...date.split(' ')[1].split(':')] : getNewDateArry();
    var defaultDate = date ? [ ...date.split(':')] : getNewDateArry();
    // 处理联动列表数据
    /*年月日 时分秒*/
    // dateTimeArray[0] = getLoopArray(start, end);
    // dateTimeArray[1] = getLoopArray(1, 12);
    // dateTimeArray[2] = getMonthDay(defaultDate[0], defaultDate[1]);
    dateTimeArray[0] = getLoopArray(0, 23);
    dateTimeArray[1] = getLoopArray(0, 59);
    dateTimeArray[2] = getLoopArray(0, 59);
    dateTimeArray.forEach((current, index) => {
      dateTime.push(current.indexOf(defaultDate[index]));
    });
    return {
      dateTimeArray: dateTimeArray,
      dateTime: dateTime
    }
  }
  /** 对数组中的时间信息进行格式化
   *  dateTimeArray :通过dateTimePicker获取的日期范围数组
   *  dateTime:     选择的日期数组信息
   */
  function formatPickerDateTime(dateTimeArray,dateTime) {
    var obj = dateTimePicker()
    // 年月日 时分秒
    // var format = dateTimeArray[0][dateTime[0]] + '-' + dateTimeArray[1][dateTime[1]]
    //   + '-' + dateTimeArray[2][dateTime[2]] + " " +
    //   dateTimeArray[3][dateTime[3]] + ':' + dateTimeArray[4][dateTime[4]] + ':' + dateTimeArray[5][dateTime[5]]
    // return format
    // 时分秒
    var format = dateTimeArray[0][dateTime[0]] + ':' + dateTimeArray[1][dateTime[1]]
      + ':' + dateTimeArray[2][dateTime[2]]
    return format
  }
  module.exports = {
    dateTimePicker: dateTimePicker,
    getMonthDay: getMonthDay,
    formatPickerDateTime: formatPickerDateTime
  }

 wxml使用
<view>选择时间</view>
<picker mode="multiSelector" value="{{dateTime}}" bindchange="onConfirmDate" range="{{dateTimeArray}}">
    <view>{{dateSelectT}}</view>
</picker>
 js内使用
var dateTimePicker = require('../../utils/dateTimePicker.js');
Page({
    data:{
        dateTime: [],
        dateTimeArray: [],
        dateSelectT: ''
    },
     /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        // startYear,endYear为空或2000,2024数字即可
        //年月日 时分秒 dateTimePicker.dateTimePicker(startYear,endYear,'2024-8-5 12:00:00');
        //回显 时分秒 dateTimePicker.dateTimePicker('12:00:00');
        let obj = dateTimePicker.dateTimePicker();
        this.setData({
            dateTime: obj.dateTime,
            dateTimeArray: obj.dateTimeArray
        });
        let dateSelectT= dateTimePicker.formatPickerDateTime(this.data.dateTimeArray, this.data.dateTime)
        this.setData({
            dateSelectT
        })
    },
    // 选择确认
    onConfirmDate(event){
        this.setData({
            dateTime: event.detail.value
        })
        let dateSelectT = dateTimePicker.formatPickerDateTime(this.data.dateTimeArray, this.data.dateTime)
        this.setData({
            dateSelectT
        })
    },
})
回显

回显就是在方法中传入时间获取到时间数组dateTime:

let obj = dateTimePicker.dateTimePicker('12:00:00');

把将获取到的时间数组赋值data也行,直接使用也可以:

this.setData({
       dateTime: obj.dateTime
 });

let dateSelectT  = dateTimePicker.formatPickerDateTime(this.data.dateTimeArray, this.data.dateTime)

将拿到的时间赋值dateSelectT 显示在页面:

this.setData({
       dateSelectT
 })

let obj = dateTimePicker.dateTimePicker('12:00:00');
        this.setData({
            dateTime: obj.dateTime,
            dateTimeArray: obj.dateTimeArray
        });
var dateSelectT = dateTimePicker.formatPickerDateTime(this.data.dateTimeArray, this.data.dateTime)
        this.setData({
           dateSelectT
        })
结语

如果想使用年月日时分秒都有的可以在dateTimePicker.js中自行修改(有注释)。

在网上看了很多都并不是单一时分秒选择,所以就看着别人的修改了一下,毕竟需求是只需要时分秒。

### 回答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、付费专栏及课程。

余额充值