美文网首页壁纸小家让前端飞程序员
javascript获取一个日期段内每天不同的价格(计算入住总价

javascript获取一个日期段内每天不同的价格(计算入住总价

作者: 玩点小技术 | 来源:发表于2018-02-04 12:47 被阅读73次
    代码例子

    最近在做酒店的小程序项目开发,遇到一个这样的问题。
    酒店的房间价格是浮动的,每天每时或某个特殊的日期价格等都是浮动的不一样。如果用户选择了未来5天的住房的话,而这5天刚好价格还都不一样还有特殊日的价格,如何计算出一个5天的总价格呢?
    下面的例子是根据入住的日期,和离店的日期来列出这一个日期段内的所有日期:

    这个功能你会有几个地方用到,所以要封装下:单独建一个js文件
    function Thedatefor(times,objroom){ // 日期段   objroom房间价格表,有星期和特殊日期
      var dateObj = []
      var feeroom = [] // 计算后总价格表
      var str = times[0].split("-")  // 入住日期
      var end = times[1].split("-") //离店日期
      var strs = new Date();
      strs.setUTCFullYear(str[0], str[1] - 1, str[2]);  //设置年份
      var ends = new Date();
      ends.setUTCFullYear(end[0], end[1] - 1, end[2]);  //设置年份
      var strdate = strs.getTime();  //毫秒
      var enddate = ends.getTime();  // 毫秒
      for (var b = strdate; b <= enddate;) {  // 遍历出所有日期段
        dateObj.push((new Date(parseInt(b))).format().toString());
        b = b + 24 * 60 * 60 * 1000;
      }
      for (var b = 0; b < dateObj.length;b++){     //dateObj拿到的所有日期
        var timedate = dateAllArr[b].split("-")       
        var getDays = new Date(dateObj[b]).getDay() == 0 ? 7 : new  
    Date(dateObj[b]).getDay()  //这里可以转换成星期几的
        for (var h = 0; h < (objroom.length - 1);h++){ 
          if (parseInt(timedate[0] + timedate[1] + timedate[2]) == objroom[h].match){ // 对比特殊日
            feeroom.push({ fee: objroom[h].fee, date: dateObj[b]})
          }//根据星期几和特殊日期来获取每天的价格
          if (getDays == objroom[h].match) {  //对比星期
            feeroom.push({ fee: objroom[h].fee, date: dateObj[b] })
          }
        }
      }
      return feeroom   //最后列出每天的价格,和日期返回
    }
    

    times传入的是入住日期和离店日期格式为:‘[2018-01-20,2018-01-26]’,objroom是一个未来一个星期的这个房间的每天价格表。

    相关文章

      网友评论

        本文标题:javascript获取一个日期段内每天不同的价格(计算入住总价

        本文链接:https://www.haomeiwen.com/subject/parmzxtx.html