微信小程序:酒店预计到店日期的时间选择器

        这个功能只显示下午14:00到次日06:00的时间段,当上午点击时间选择器时候,选择器的列表默认从14:00开始到次日06:00的时间段,当下午点击时间选择器时候,选择器的列表默认从当前时间开始到次日06:00的时间段,

效果图:

1,布局

 2,js逻辑

/** 生命周期函数--监听页面显示  */

  onShow: function () {

    this.obtainTime();

  },

/**  获取到达酒店的时间段  */

  obtainTime(){

    let hour = getToDay().date;

    let hou = hour.getHours();

    if(hou < 14){

      let list = ['14:00','15:00','16:00','17:00','18:00','19:00','20:00','21:00','22:00','23:00','次日 00:00','次日 01:00','次日 02:00','次日 03:00','次日 04:00','次日 05:00','次日 06:00'];

      this.setData({

        timeSelection:list

      });

    }else{

      let list = [];

      // for循环的3个条件可以省略,没有退出循环的判断条件,就必须使用break语句退出循环,否则就是死循环:

      for(; ;) {

        hour.setHours(hour.getHours() + 1);

        let hh = hour.getHours();

        if(hh == 7){

          break; // 通过if判断来退出循环

        }

        if (hh < 10) hh = '次日 0' + hh +':00';

        if (hh > 10) hh = hh +':00';

        list.push(hh)

      }

      this.setData({

        timeSelection:list

      });

    }

  },

/**  预计到店时间显示  */

  bindTimeChange(e){

    this.setData({

      index2:e.detail.value

    })

  }

 3,年月日时分秒的封装

/** 将日期格式拆分 */

export function formatTime(date) {

  const year = date.getFullYear()

  const month = date.getMonth() + 1

  const day = date.getDate()

  const hour = date.getHours()

  const minute = date.getMinutes()

  const second = date.getSeconds()

 return [year, month, day ,hour, minute, second].map(formatNumber)

}

/** 截取日期 */

export function formatDate( time_ , format_ ) {

  const date = time_.split(" ");

  const dateArr = date[0].split("-");

  const timeArr = date[1].split(":");

  switch (format_) {

    case 'yy-mm': 

    return  `${ dateArr[0] }-${ dateArr[1] }`

    break;

    case 'yy-mm-dd': 

    return  `${ dateArr[0] }-${ dateArr[1] }-${ dateArr[2] }`

    break;

    case 'yy-mm-dd hh:mm': 

    return  `${ dateArr[0] }-${ dateArr[1] }-${ dateArr[2] } ${ timeArr[0] }:${ timeArr[1] }`

    break;

    default: return false; break;

  }

}

/** 将时间差转成hh:mm格式 */

export function calculateTime( s_ , e_  , format) {

  let s_times = new Date(s_.replace(/-/g,'/').replace(/-/g,'/')).getTime();

  let e_times = new Date(e_.replace(/-/g,'/').replace(/-/g,'/')).getTime();

  let durs = ( e_times - s_times );

  let hour = durs/1000/60/60;

  hour = Math.floor(hour);

  let minute = Math.floor((durs - hour*1000*60*60)/1000/60);

  let second = Math.floor((durs - hour*1000*60*60 - minute*1000*60)/1000);

  return [hour,minute,second].map(formatNumber)  

}

// 格式化

function formatNumber(n) {

  n = n.toString()

  return n.length >= 2 ? n : '0' + n  

}

/** 获取今天日期 */

export function getToDay() {

  let date = new Date();

  let y = date.getFullYear();

  let m = date.getMonth() + 1;

  let d = date.getDate();

  let hh = date.getHours();

  let mm = date.getMinutes();

  let ss = date.getSeconds();

  date.setDate(date.getDate() + 1); //未来的天数  1代表明天,2,3,4,5代表着未来的几天

  let yyy = date.getFullYear();

  let mmm = date.getMonth() + 1;

  let ddd = date.getDate();

  let today = `${ y }-${ formatNumber(m) }-${ formatNumber(d) }`;  //年月日

  let currentDate = `${ y }-${ formatNumber(m) }-${ formatNumber(d) }`;  //当前日期

  let future = `${ yyy }-${ formatNumber(mmm) }-${ formatNumber(ddd) }`;  //未来的日期

  let n = today + ` ${ formatNumber(hh) }:${ formatNumber(mm) }:${ formatNumber(ss) }`;  //当前时间

  return {

    date,

    y,

    m,

    d,

    currentDate,

    future,

    today,

    hh,

    mm,

    n

  }  

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值