elementUI中DatePicker如何將'2018-07-22'轉成時間戳傳給後臺

1、需求vue

  一直以來都沒有總結的習慣,因此不少知識其實在項目中都用過但本身仍是想不起來。因此如今要學着抽出時間去總結。下面說下這個知識點的來由。(咱們項目用的是elementUI組件)ios

  一、相似一個統計圖的界面,須要根據時間的查詢來顯示相應的統計圖表axios

     

  二、因爲後臺給個人接口須要傳入startime和endtime兩個參數,後臺讓我以時間戳的形式傳給他(一開始時間是空的接口報500的錯誤,因此後臺說讓我默認endtime是當天的日期,starttime是當天的上個月日期、)瀏覽器

  三、發現選擇起始時間爲2018-06-25,結束時間爲2018-07-22查詢數據。發現一個問題只能查詢到2018-07-21以前的數據,不能查到2018-07-22那天的數據。產生這個的緣由是elementUI1.4.13版本這個時間是從2018-07-22 00:00:00算的,而數據是在00:00:00以後的查詢不到的post

2、思考this

  一、首先我要給startime和endtime默認值spa

  二、選擇更改endtime怎麼使得(如2018-07-22 00:00:00的時間變成2018-07-22 23:59:59)3d

  三、轉成時間戳的形式傳給後臺code

3、解決問題orm

  一、解決給startime和endtime默認值問題,解決方法以下:

    (1)vue中template的代碼以下:

<templete>
    <div class="content">
        <div class="handle-box MarginBt20">
            <!-- 時間 -->
            <div class="block">
                <span class="demonstration ">查詢時間</span>
                <el-date-picker
                  v-model="startDate"
                  type="date"
                  @change="getStartTime"
                  format="yyyy-MM-dd"
                  placeholder="選擇開始日期時間">
                </el-date-picker>
                <span>--</span>
                <el-date-picker
                  v-model="endDate"
                  type="date"
                  @change="getTime"
                  format="yyyy-MM-dd"
                  placeholder="選擇結束日期時間">
                </el-date-picker>
                <el-button type="primary" icon="search" @click="search">查詢</el-button>
            </div>          
        </div>
    </div>
</templete>

   備註:elementUI中對日期選擇器有屬性說明,以下圖所示:

                    

    (2)成功給默認值,vue中data的數據以下:

export default {
        data() {
            return {
                startDate: new Date(new Date().setMonth((new Date().getMonth()-1))),
                endDate: new Date(),
            }
          
         }
 }

  二、解決選擇更改endtime怎麼使得(如2018-07-24 00:00:00的時間變成2018-07-24 23:59:59)

    (1)寫日期的change事件,我在項目寫更改endtime的方法是getTime。主要是想記錄本身當時的實現思路。

      ①、在vue中的script中寫methods方法,getTime(date){},打印date是什麼,一開始我覺得那個date是Date類型,判斷類型後才知道是字符串類型的。那麼我須要將他轉成Date類,解決方法代碼以下: 

<script>
    export default {
        data(){
            return{
                startDate: new Date(new Date().setMonth((new Date().getMonth()-1))),
                endDate: new Date()
            }
        },
        methods:{
          getTime(date){               
                console.log(date);
                console.log(date.constructor)
                let self = this;
                let str = date;
                str = str.replace(/-/g, '/');
                let strDate  = new Date(str);
                console.log(strDate)
            }  
        }
    }
</script>

備註:我更改的endtime日期爲2018-07-24,那麼在瀏覽器中打印的結果以下:

                                  

      ②、須要將00:00:00的時間改成23:59:59,我用的是比較笨的方法。就是將Tue Jul 24 2018 00:00:00 GMT+0800 (中國標準時間)轉成字符串的年月日,再加上'23:59:59'的字符串,輸入框的日期依然顯示2018-07-24

<script>
    export default {
        data(){
            return{
                startDate: new Date(new Date().setMonth((new Date().getMonth()-1))),
                endDate: new Date()
            }
        },
        methods:{
          getTime(date){               
                let self = this;
                let str = date;
                str = str.replace(/-/g, '/');
                let strDate  = new Date(str);
                let Y = strDate.getFullYear() + '-';
                let M = (strDate.getMonth()+1 < 10 ? '0'+(strDate.getMonth()+1) : strDate.getMonth()+1) + '-';
                let D = strDate.getDate();
                let dateAfter = Y+M+D+' '+'23:59:59';
                console.log(dateAfter)
                self.endDate = new Date(dateAfter);
                console.log(self.endDate)
            }
        }
    }
</script>

備註:瀏覽器打印的結果爲

                                        

  三、將Tue Jul 24 2018 23:59:59 GMT+0800 (中國標準時間),轉成時間戳傳給後臺

<script>
    export default {
        data(){
            return{
                startDate: new Date(new Date().setMonth((new Date().getMonth()-1))),
                endDate: new Date()
            }
        },
        methods:{
          getTime(date){               
                let self = this;
                let str = date;
                str = str.replace(/-/g, '/');
                let strDate  = new Date(str);
                let Y = strDate.getFullYear() + '-';
                let M = (strDate.getMonth()+1 < 10 ? '0'+(strDate.getMonth()+1) : strDate.getMonth()+1) + '-';
                let D = strDate.getDate();
                let dateAfter = Y+M+D+' '+'23:59:59';
                console.log(dateAfter)
                self.endDate = new Date(dateAfter);
                console.log(self.endDate)
            },
              //獲取統計圖信息
            getCartogramData(){
                let self = this; 
                if(self.startDate ==null || self.endDate ==null){
                    return
                }
                let startTime = self.startDate.getTime();
                let endDate = self.endDate.getTime();
                self.$axios.post('你的數據接口?'startTime='+startTime +'&endTime='+ endDate).then((res) => {
                  /*你的數據進行處理*/
                });
             }   
        }
    }
</script>
相關文章
相關標籤/搜索