sencha 做有自己的輸入日期輸入框,xtype: 'datepickerfield'。
提交表單後,如果是使用getValue(),那麼取到的值是一個日期對象;如果是用getFormattedValue(),取到的值是一個顯示區域的格式的值,比如設置有:dateFormat : 'd/m/Y', 那麼取到的值也是d/m/Y格式;如果需求要求顯示的日期剛好能進行比較,那就還好;如果不一樣,方法有兩種了:
1、取到格式化的值,然後進行字符串切割,做到可以加減比較來算出天數,不過相差月份轉換爲天數,也是一個難題,因爲有大小月,閏月的說法,這種做法不合理,效果也差;
2、用getValue(),取到對象,然後使用js的日期函數,進行計算:
先取得日期輸入框的對象
var date_from = Ext.ComponentQuery.query('datepickerfield')[0];//從上往下,第一個日期輸入框
var date_to = Ext.ComponentQuery.query('datepickerfield')[1];//第二個日期輸入框
(1)比較日期的大小:
Date.parse(date_to.getValue())>=Date.parse(date_from.getValue());//實際是時間戳的對比
(2) 計算日期的相差天數:
var dateMilli = Date.parse(date_to.getValue())-Date.parse(date_from.getValue());//日期減,得到時間戳
var count_day = Math.ceil(dateMilli/(24*3600*1000));//時間戳進行除法,轉換爲天數,然後向上取整,因爲1.7,1.5,1.4天也算是兩天