<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      用最笨的方法記錄工作中的一次數據處理

      最近在做移動端的一個項目,項目中涉及到了一個日期選擇的功能,如圖所示,看上去貌似很簡單,但是在做的過程中,發現難點主要是對于數據的組裝。項目中用到的是Vant組件庫,雖然其也有DatetimePicker時間選擇器,但是我看了好久感覺還是有點不符合UI設計,尤其是到某一天的時候還要展示其是周幾,很不好弄。所以想了想還是自己搞吧,借助Vant的Picker選擇器,自己寫了一個,最終的結果如圖2,還有點差別,但是那已經不是什么大問題了,很簡單!

       
      UI稿
       圖2

      第一步:確定數據結構

      Vant的Picker選擇器要求這種形式展現的數據結構是數組對象形式的,因此先確定了下面的這種數據結

      [
        {
          text: '2022年',
          type: 'year',
          shortName: 2022,
          children: [
            {
              text: '01月',
              type: 'month',
              shortName: '1',
              children: [
                {
                  text: '01日(周一)',
                  type: 'day',
                  shortName: '1'
                }
              ]
            }
          ]
        }
      ];

       

      第二步:處理數據

      確定完數據結構后,然后就開始寫代碼了,具體的代碼如const nowDate = new Date(); // 獲取當前的日期const year = nowDate.getFullYear(); // 獲取當前的年份const month = []; // 存儲月份

      for (let i = 1; i < 13; i++) { // 生成月份
        month.push({
          text: i < 10 ? '0' + `${i}月` : `${i}月` + '',
          type: 'month',
          shortName: i + '',
          children: dealDay(i)
        });
      }
      
      // 處理日期(天和星期),因為每一年每個月份日期都是確定的(除2月外),所以大月是31天,小月是30天
      function dealDay(month) {
        switch (month) {
          case 1:
          case 3:
          case 5:
          case 7:
          case 8:
          case 10:
          case 12:
            return dealDayWeek(year, month, 32); // 大月31
          case 4:
          case 6:
          case 9:
          case 11:
            return dealDayWeek(year, month, 31); // 小月30
          case 2: // 二月單獨處理
            return dealMonthDay(year);
        }
      }
      // 判斷是閏年還是平年(閏年2月29,平年28)
      function dealMonthDay(year) {
        if ((year % 4 === 0 && year % 100 !== 0) || year % 400 === 0) {
          return dealDayWeek(year, 2, 30);
        } else {
          return dealDayWeek(year, 2, 29);
        }
      }
      
      // 根據日期獲取星期幾
      year: 年份
      month: 月份
      total: 每個月的總天數
      function dealDayWeek(year, month, total) { const weeks = ['周日', '周一', '周二', '周三', '周四', '周五', '周六']; const days = []; for (let i = 1; i < total; i++) {
      // 根據傳過來的每個月的天數循環和年、月組成新的數據,通過new Date('xxxx-xx-xx').getDay()的形式獲取到星期幾所對應的索引號,比如是0,則是星期天
      const d = new Date(year + '-' + (month < 10 ? '0' + month : month) + '-' + (i < 10 ? '0' + i : i)).getDay(); 
          const day = weeks[d]; // 獲取星期幾
          days.push({
            text: i < 10 ? '0' + i + `(${day})` : i + '' + `(${day})`,
            shortName: i + '',
            type: 'day'
          });
        }
        // console.log(days)
        return days;
      }
      // 組裝完的結果
        let dateTime = [{
          text: year + '年',
          shortName: nowDate.getFullYear() + '',
          type: 'year',
          children: month
        }]
      console.log(dateTime)

      最終得到的結果如圖片所示,大功告成(再繼續優化一下就ok了)

       

      posted @ 2022-07-20 17:18  修謙得益  閱讀(110)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 成人特黄特色毛片免费看| 最新日韩精品视频在线| 国产成人午夜福利在线播放| 91精品午夜福利在线观看| 四虎精品视频永久免费| 日本乱子人伦在线视频| 九九热爱视频精品视频| 一区二区三区岛国av毛片| 波多野结衣视频一区二区| 亚洲天堂av日韩精品| 天堂v亚洲国产v第一次| 国产一区二区不卡91| 扒开女人内裤猛进猛出免费视频| 视频一区视频二区中文字幕| 欧美人与动欧交视频| av色国产色拍| 亚洲人成色99999在线观看| 亚洲欧美成人aⅴ在线| 久久中精品中文字幕入口| 国产偷国产偷亚洲高清日韩| 亚洲高清aⅴ日本欧美视频| 国产一区二区三区小说| 国产精品午夜福利精品| 贺州市| 伊人精品成人久久综合97| 韩国V欧美V亚洲V日本V| 通山县| 亚洲国产另类久久久精品| 亚洲精品麻豆一二三区| 国产在线亚州精品内射| 亚洲人成小说网站色在线| 亚洲人成小说网站色在线| 亚洲高清国产拍精品熟女| 亚洲AV高清一区二区三区尤物| 亚洲中文字幕在线观看| 无码抽搐高潮喷水流白浆| 成人乱码一区二区三区av| 亚洲国产在一区二区三区| 99RE8这里有精品热视频| 四虎影视一区二区精品| 国产精品毛片一区二区三|