首頁 > 軟體

Vue3 elementUI如何修改el-date-picker預設時間

2022-08-16 10:01:32

elementUI修改el-date-picker預設時間

 HTML:

<el-date-picker
   v-model="dateValue"
   type="daterange"
   size="small"
   unlink-panels
   range-separator="至"
   start-placeholder="開始日期"
   end-placeholder="結束日期"
   :shortcuts="shortcuts">
</el-date-picker>

JS:

//放在頁面的state中
shortcuts: [
        {
          text: "本週",
          value: () => {
            const end = new Date();
            const start = new Date();
            //週日算第一天,如果週日查詢本週的話,天數是0,所有如果是0,預設設定為7,處理當前周
            const nows = start.getDay() || 7; 
            start.setTime(start.getTime() - 3600 * 1000 * 24 * (nows - 1));
            end.setTime(end.getTime() - 3600 * 1000 * 24 * (nows - 7));
            console.log(start, end, "end");
            return [start, end];
          },
        },
        {
          text: "本月",
          value: () => methods.getTime(),
        },
        {
          text: "上月",
          value: () => {
            const oDate = new Date();
            let year = oDate.getFullYear();
            let month = oDate.getMonth();
            let start, end;
            if (month == 0) {
              year--;
              start = new Date(year, 11, 1);
              end = new Date(year, 11, 31);
            } else {
              start = new Date(year, month - 1, 1);
              end = new Date(year, month, 0);
            }
            return [start, end];
          },
        },
      ],

處理本月的函數:

      // 獲取本月時間段datePicker使用
      getTime() {
        const oDate = new Date();
        let year = oDate.getFullYear();
        let month = 0//oDate.getMonth();
        let start, end;
        if (month == 0) {
          year--;
          start = new Date(year, 0, 1);
          end = new Date(year, 12, 31);
        } else {
          start = new Date(year, month, 1);
          end = new Date(year, month + 1, 0);
        }
        state.dateValue = [start, end];
        return [start, end];
      },

el-date-picker設定預設時間區間

需求

需要一進頁面時,把日期選擇器,預設展示為2012-01-01至當前日期-1天

即圖:

程式碼和註釋如下

2.1

<el-form-item label="時間週期:" prop="timeCycle" >
      <el-date-picker
         v-model="createForm.timeCycle"
         type="datetimerange" 
         :picker-options="pickerOptions" //快捷時間選擇的函數
         range-separator="至"
         start-placeholder="開始日期"
         end-placeholder="結束日期"
         value-format="yyyy-MM-dd" //預設值為這種格式
       >
      </el-date-picker>
</el-form-item>

2.2

由於開始時間是固定的,所以需要在定義資料時定義好,結束時間不能不填,也不能是" ",也不能是不符合時間格式的,否則整個時間選擇器都不會展示了

  data(){
     return {
        createForm: {
          timeCycle:["2012-01-01","2012-01-01"]
        }
     }
   }

2.3

在頁面一載入時,在created函數裡把結束時間算好,然後賦值到定義的timeCycle陣列的第二項

created(){
      const end = new Date();//獲取當前的日期
      end.setTime(end.getTime() - 3600 * 1000 * 24 )
      //計算,將當期日期-1天
      //此時得到的是中國標準時間,格式不是yyyy-MM-dd,需要用dateFormat這個函數轉換下
      this.createForm.timeCycle[1]=this.dateFormat(end)
      //將轉換完的正確格式的結束時間賦值到timeCycle陣列的第二項
  }

2.4

時間格式的轉換函數

中國標準時間,即,例如:Wed Oct 24 2018 20:00:00 GMT+0800

轉換為:yyyy-MM-dd格式,即:2018-10-24

 methods:{
   dateFormat(dateData) {
      var date = new Date(dateData)
      var y = date.getFullYear()
      var m = date.getMonth() + 1
      m = m < 10 ? ('0' + m) : m
      var d = date.getDate()
      d = d < 10 ? ('0' + d) : d
      const time = y + '-' + m + '-' + d
      return time
    }
 }

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。 


IT145.com E-mail:sddin#qq.com