简介 目录 评价 推荐
  • 卷狗 2021-09-23

    当月第一天,和当月最后一天的获取方式...这个就确实比较扯了,但事实上它就要这样....

    0赞 · 0采集
  • 慕九州4049775 2021-07-29
    1.如何计算出现位置
    wrapper.left=input.offsetleft
    wrapper.top=input.top+height
    2.ui设计 div+table
    3.一个月有4-6个星期
    4.当月第一天 new Date(year,month-1,1)
    当月最后天 new Date(year,month,0)因为月可能28天可能30,31
    星期1-星期天【1,2,3,4,5,6】
    5.组件结构



    6102ca62000147b005401200.jpg6102ca2a0001978405401200.jpg
    0赞 · 0采集
  • 慕九州4049775 2021-07-29
    vscode数字范围插件
    0赞 · 0采集
  • qiug 2020-04-28

    第一天

    new Date(year, minth-1, 1)

    最后一天

    new Date(year, month,0)


    截图
    0赞 · 0采集
  • 慕粉2466386 2019-07-19
    (function () {
       var datepicker = {};
        datepicker.getMonthData = function (year,month) {
            var ret = [];
            if(!year || !month){
                var today = new Date();
                year = today.getFullYear();
                month = today.getMonth()+1;
            }
            var firstDay = new Date(year,month-1,1);
            var firstDayWeekDay = firstDay.getDay();
            if(firstDayWeekDay === 0)
                firstDayWeekDay = 7;
    
            var lastDayOfLastMonth = new Date(year,month-1,0);
            var lastDateOfLastMonth = lastDayOfLastMonth.getDate();
    
            var preMonthDayCount = firstDayWeekDay -1;
    
            var lastDay = new Date(year,month,0);
            var lastDate = lastDay.getDate();
    
            //利用循环查询到一周日期
            for( var i = 0; i<7*6; i++){
                var date = i+1 - preMonthDayCount;
                var showDate = date;
                var thisMonth = month;
                if(date <= 0){
                    thisMonth = month +1;
                    showDate = lastDateOfLastMonth +date;
                }else if(date > lastDate){
                    thisMonth = month +1;
                    showDate = showDate-lastDate;
                }if(thisMonth === 0)thisMonth = 12;
                if(thisMonth === 13) thisMonth = 1;
    
                ret.push({
                   month:thisMonth,
                   date:date,
                    showDate:showDate
                });
            }
            return ret;
        };
       window.datepicker = datepicker;
    
    })();


    0赞 · 0采集
  • 越来越泳 2019-03-22

    new Date(year, month-1, date)

    月份需要减一

    越界自动退位

    getFullYear()/ getMonth()/  getDate()   /  getDay() [获取星期0到6]

    当月第一天new Date(year, minth-1, 1)

    当月最后一天new Date(year, month,0)

    1赞 · 1采集
  • aSuncat 2018-07-26

    二、date.js

    (function() { // 为了防止模块编写的时候污染外部环境,就会用匿名函数。
      let datepicker = {};
      datepicker.getMonthData = function(year, month) {
        let ret = [];
        if (!year && !month && month !==0) {
          let today = new Date();
          year = today.getFullYear();
          month = today.getMonth() + 1;
        }
        let firstDay = new Date(year, month - 1, 1);
        let firstDayWeekDay = firstDay.getDay();
        if (firstDayWeekDay === 0) {
          firstDayWeekDay = 7;
        }
        year = firstDay.getFullYear(); // 哪年
        month = firstDay.getMonth() + 1; // 哪月
        let lastDayOfLastMoth = new Date(year, month - 1, 0); // 上个月最后一天
        let lastDateOfLastMonth = lastDayOfLastMoth.getDate(); // 上个月最后一天是几号
        let preMonthDayCount = firstDayWeekDay - 1; // 上个月最后一天是星期几
        let lastDay = new Date(year, month, 0); // 这个月最后一天
        let lastDate = lastDay.getDate(); // 这个月最后一天是几号
        for (let i = 0; i < 7*6; i++) {
          let date = i - preMonthDayCount + 1; // 距离上个月最后一天多长时间(单位:天)
          let showDate = date;
          let thisMonth = month;
          if (date <= 0) {
            // 上一月
            thisMonth = month - 1; // 上个月月份
            showDate = lastDateOfLastMonth + date; // 上个月日期
          } else if (date > lastDate) {
            // 下一月
            thisMonth = month + 1; // 下个月月份
            showDate = showDate - lastDate; // 下个月日期
          }
          // if (thisMonth === 0) {
          //   thisMonth = 12;
          // }
          // if (thisMonth === 13) {
          //   thisMonth = 1;
          // }
          thisMonth = thisMonth === 0 ? 12 :thisMonth === 13 ? 1 : thisMonth;
          ret.push({
            month: thisMonth,
            date: date,
            showDate: showDate
          });
        }
        return {
          year: year,
          month: month,
          days: ret
        };
      };
      window.datePicker = datepicker;
    })();

    三、main.js

    (function() {
      let datePicker = window.datePicker;
      let monthData;
      let $wrapper;
      datePicker.buildUi = function(year, month) {
        monthData = datePicker.getMonthData(year, month);
        let html = '<div class="ui-datepicker-head">'+
          '<a class="ui-datepicker-btn ui-datepicker-prev-btn">&lt;</a>'+
          ' <a class="ui-datepicker-btn ui-datepicker-next-btn">&gt;</a>'+
        ' <span class="ui-datepicker-curr-month">' + monthData.year + '- ' + monthData.month + '</span>'+
        ' </div>'+
        ' <div class="ui-datepicker-body">'+
        ' <table>'+
        ' <thead>'+
        '  <tr>'+
          '<th>一</th>'+
          ' <th>二</th>'+
        ' <th>三</th>'+
        '<th>四</th>'+
        '<th>五</th>'+
        ' <th>六</th>'+
        ' <th>七</th>'+
       '   </tr>'+
          '</thead>'+
         ' <tbody>';
        for (let i = 0; i < monthData.days.length; i++) {
          let date = monthData.days[i];
          if (i % 7 === 0) {
            html += '<tr>';
          }
          html += '<td data-date="' + date.date + '">' + date.showDate + '</td>';
          if (i % 7 === 6) {
            html += '</tr>';
          }
        }
        html += '</tbody>' +
            '</table>' +
            '</div>';
        return html;
      };
      datePicker.render = function(direction) {
        let year,month;
        if (monthData) {
          year = monthData.year;
          month = monthData.month;
        }
        if (direction === 'prev') {
          month--;
        }
        if (direction === 'next') {
          month++;
        }
        let html = datePicker.buildUi(year, month);
        $wrapper = document.querySelector('.ui-datepicker-wrapper');
        if (!$wrapper) {
          $wrapper = document.createElement('div');
          document.body.appendChild($wrapper);
          $wrapper.className = 'ui-datepicker-wrapper';
        }
        $wrapper.innerHTML = html;
      };
      datePicker.init = function($dom) {
        datePicker.render();
        let $input = document.querySelector($dom);
        let isOpen = false;
        // $dom点击后,日历显示出来,日历位置适应。
        $input.addEventListener('click', function() {
          if (isOpen) {
            $wrapper.classList.remove('ui-datepicker-wrapper-show');
            isOpen = false;
          } else {
            $wrapper.classList.add('ui-datepicker-wrapper-show');
            let left = $input.offsetLeft;
            let top = $input.offsetTop;
            let height = $input.offsetHeight;
            $wrapper.style.top = top + height + 2 + 'px';
            $wrapper.style.left = left + 'px';
            isOpen = true;
          }
        }, false);
        // $wrapper.querySelector('.ui-datepicker-btn').addEventListener();
        // 每次渲染完重新绑定事件
        // 为不变的元素绑定事件
        $wrapper.addEventListener('click', function(e) {
          let $target = e.target;
          // let containsBtn = $target.classList.contains('ui-datepicker-btn');
          if (!$target.classList.contains('ui-datepicker-btn')) {
            return;
          }
          if ($target.classList.contains('ui-datepicker-prev-btn')) {
            datePicker.render('prev');
          } else if ($target.classList.contains('ui-datepicker-next-btn')) {
            datePicker.render('next');
          }
        }, false);
        $wrapper.addEventListener('click', function(e) {
          let $target = e.target;
          if ($target.tagName.toLowerCase() !== 'td') {
            return;
          }
          let date = new Date(monthData.year, monthData.month - 1, $target.dataset.date);
          $input.value = format(date);
          $wrapper.classList.remove('ui-datepicker-wrapper-show');
          isOpen = false;
        })
      }
      function format(date) {
        let ret = '';
        let shuffle = function(num) {
          if (num <= 9) {
            return `0${num}`;
          }
          return num;
        };
        ret += date.getFullYear() + '-';
        ret += shuffle(date.getMonth() + 1) + '-';
        ret += shuffle(date.getDate());
        return ret;
      }
    })();


    3赞 · 3采集
  • aSuncat 2018-07-26

    一、优化方向:

    1、如何在移动端使用这个组件。

    2、页面定位比较复杂时,如何处理弹出框的位置。

    3、如何让上一个月,下一个月,使用不同的样式。

    4、如何让某些日期可点,某些日期不可点。

    1赞 · 1采集
  • aSuncat 2018-07-26

    一、<a href=""> 写了href,但是里面没有赋值,导致点击a链接会重新刷新页面,一直不能跳转到上一个月。这个bug找了很久。

    1赞 · 2采集
  • aSuncat 2018-07-25

    一、为了防止模块编写的时候污染环境,就会用匿名函数。


    0赞 · 0采集
  • aSuncat 2018-07-25

    一、日期对象:new Date(year, month-1, date)

    1、月份需要-1.

    2、越界自动进(退)位

    3、getFullYear() / getMonth() / getDate()

    4、getYear():当前年距离1900年多少年。

    5、getDay():当前日期是周几

    二、日期

    1、当月第一天:new Date(year, month-1, 1)。

    2、当月最后一天:new Date(year, month, 0)。

    3、星期一-星期天[1, 2, 3, 4, 5, 6, 0]

    0赞 · 1采集
  • aSuncat 2018-07-25

    一、webstorm:从1到10递增快捷键:li{$}*10

    1赞 · 0采集
  • aSuncat 2018-07-25

    一、日历制作过程

    1、静态结构编写。

    2、日历数据。

    3、数据渲染。

    4、事件处理。

    0赞 · 0采集
  • 八神光 2018-07-09

    当月第一天,最后一天

    截图
    0赞 · 0采集
  • 慕田峪8142436 2018-04-23

    cursor:pointer;是鼠标指针移上去显示手形状

    0赞 · 0采集
  • qq_昨夜闲谈梦落花_0 2018-03-15
    datepicker.init = function (input, year, month) { var html = datepicker.buildUi(year, month), $wrapper = document.createElement("div"); $wrapper.className = "ui-datepicker-wrapper"; $wrapper.innerHTML = html; document.body.appendChild($wrapper); var $input = document.querySelector(input), isOpen = false; $input.addEventListener("click",function () { if(isOpen){ $wrapper.classList.remove("ui-datepicker-wrapper-show"); isOpen = false; }else { $wrapper.classList.add("ui-datepicker-wrapper-show"); var left = $input.offsetLeft, top = $input.offsetTop, height = $input.offsetHeight; $wrapper.style.top = top +height + 2 + "px"; $wrapper.style.left = left + "px"; isOpen = true; } },false);
    0赞 · 0采集
  • qq_昨夜闲谈梦落花_0 2018-03-15
    //循环获取当前月的每一天 for(var i=0; i<42; i++){ //算出真实日期是多少(只看day 不考虑month) var date = i - preMonthDayCount +1; var showDate = date; //指定当前月 var thisMonth = month; //处理上一月与下一月 if(date <= 0){ //上一月 thisMonth = month - 1; showDate = lastDateOfLastMonth + date; }else if(date > lastDate){ //下一月 thisMonth = month + 1; showDate = showDate - lastDate; } //修正月显示 if(thisMonth === 0) thisMonth =12; if(thisMonth === 13) thisMonth = 1; //返回相关数据 ret.push({ month:thisMonth, date:date, showDate:showDate }) } return ret; }; window.datepicker = datepicker; })();
    1赞 · 2采集
  • qq_昨夜闲谈梦落花_0 2018-03-15
    (function () { var datepicker = {}; datepicker.getMonthDate = function (year, month) { var ret = []; //如果没有传入年月,则获取当前年月 if(!year || !month){ var today = new Date(); year = today.getFullYear(); month = today.getMonth() + 1; } //获取本月的第一天 var firstDay = new Date(year, month - 1, 1); //判断当天是周几 var firstDayWeekDay = firstDay.getDay(); //修正星期天显示为0 if(firstDayWeekDay === 0) firstDayWeekDay = 7; //获取上个月的最后一天 var lastDayOfLastMonth = new Date(year, month - 1, 0); var lastDateOfLastMonth = lastDayOfLastMonth.getDate(); //获取上个月应该显示的天数 var preMonthDayCount = firstDayWeekDay - 1; //获取当月的最后一天 var lastDay = new Date(year, month, 0); var lastDate = lastDay.getDate();
    0赞 · 0采集
  • chouwane 2018-03-06
    当月的第一天 new Date(year, month-1, 1) 当月的最后一天 new Date(year, month, 0) getFullyear() 获取年份 getMonth() 获取月份 getDate() 获取天 getDay() 获取星期几
    0赞 · 1采集
  • Sky羽殇 2018-01-13
    日期相关知识1
    截图
    0赞 · 0采集
  • Sky羽殇 2018-01-13
    日期的相关知识2
    截图
    0赞 · 0采集
  • 删了一百个仓库呢 2017-12-04
    数据的作用
    截图
    0赞 · 0采集
  • 删了一百个仓库呢 2017-12-04
    结构分析
    截图
    1赞 · 1采集
  • 删了一百个仓库呢 2017-12-04
    课程安排
    截图
    0赞 · 0采集
  • Moirai 2017-11-01
    获取当前月首尾两天,每个月最后一天不一样 注意星期天是0
    截图
    0赞 · 0采集
  • Moirai 2017-11-01
    日期对象的月份是从0开始算起
    截图
    0赞 · 0采集
  • 慕移动6069114 2017-10-21
    日期对象 .new Date(year,month-1,date) .月份需要-1 .越界自动进(退)位 .getFullYear()/getMonth()/getDate() .getDay()
    0赞 · 0采集
  • 一树青枫 2017-09-11
    后续可完善的功能: 如何在移动端使用日期组件; 当页面比较复杂的时候,如何处理,弹出框的位子; 如何标记上一个月与下一个月的日期,使它们拥有不同的样式; 某一些日期可点,某一些日期不可点。
    0赞 · 0采集
  • 一树青枫 2017-09-11
    课程总结(组件开发流程): 使用HTML合理规划组件结构; 为组件编写美观的样式; 如何使用JavaScript获取组件所需数据; 将数据与HTML结构结合; 用户事件处理;
    0赞 · 0采集
  • hbxiaobai 2017-09-08
    日期对象
    截图
    0赞 · 0采集
数据加载中...
开始学习 免费