2015-03-06 3 views
0

Я пытаюсь получить диапазон между двумя датами. Это код, который я использую:Получить даты между датой начала и окончания в ExtJS

  var startDateStr = Ext.getCmp('startDateFoi').getSubmitValue(); 
      //console.log(startDateStr); // 10-Mar-2015 
      var endDateStr = Ext.getCmp('endDateFoi').getSubmitValue(); 
      //console.log(endDateStr); // 12-Mar-2015 

      allDates = []; 

      while (startDateStr <= endDateStr) { 
       allDates.push(new Date(startDateStr)); 
       startDateStr.setDate(startDateStr.getDate() + 1); 
      } 

      console.log(allDates); 

Что мне здесь не хватает? Должен ли формат иметь определенный тип?

ответ

0

Вот как я это сделал: Сначала я сделал функцию:

  var ImagedbyDate = function(){ 
      $(document).ready(function(){ 

     // GET ALL THE DATES BETWEEN TWO SELECTED DAYS AND STORE THEM IN AN ARRAY (allDates[]) 

      var startDateStr = Ext.getCmp('startDateFoi').getSubmitValue(); 
      alert(startDateStr); 
      var endDateStr = Ext.getCmp('endDateFoi').getSubmitValue(); 
      alert(endDateStr); 

      currentDate = new Date(startDateStr); 
      endDate = new Date(endDateStr); 
      alert(currentDate); 
      allDates = []; 

      while (currentDate <= endDate) { 
       allDates.push(new Date(currentDate)); 
       currentDate.setDate(currentDate.getDate() + 1); 
      } 

На самом деле я добавил эти две строки:

 currentDate = new Date(startDateStr); 
     endDate = new Date(endDateStr); 

Это выглядит как мои детали:

{ 
      region: 'center', 
      title: "Rural Broadband", 
      layout: 'fit', 
      collapsible: false, 
      items: [mappanel] , //mapPanel 
      dockedItems: [{ //Toolbar with Actions - Beginn 
       xtype: 'toolbar', 
       dock: 'top', 
       items: [{ 
       text: 'Current center of the map', 
       handler: function(){ 
        var c = GeoExt.panel.Map.guess().map.getCenter(); 
        Ext.Msg.alert(this.getText(), c.toString()); 
        } 
       },{ 
       text: 'See Unassigned Images', 
       handler: function(){ 
        UnassignedImg(); 
        } 
       }, 
       { 
        fieldLabel: 'Start Date', 
        name: 'startDate', 
        xtype: 'datefield', 
        id: 'startDateFoi', 
        format: 'd-M-Y' 
       }, 
       { 
        fieldLabel: 'End Date', 
        name: 'startDate', 
        id: 'endDateFoi', 
        xtype: 'datefield', 
        format: 'd-M-Y' 
       }, ... 

Я надеюсь, что это поможет кому-то.

+0

Это довольно длинный ветер и сложность, см. Мой ответ на однострочное решение, а не на цикл – Scriptable

1

Вы можете использовать класс Ext.Date, чтобы справиться с этим: Ext.Date.diff

// calculate the difference in days between two dates 
var diff = Ext.Date.diff(date1, date2, 'd')); 

Или, если вы хотите стандартной версии JS, так что вы знаете, как это работает:

Fiddle Link

Ext.application({ 
    name: 'Fiddle', 

    launch: function() { 
     var processRequest = function() { 
       var date1 = Ext.getCmp('date1').getValue(); 
       var date2 = Ext.getCmp('date2').getValue(); 

       // JS counts it in milliseconds 
       var diff = (date2 - date1)/1000; 

       // Number of seconds in one day 
       console.log(diff/86400); 
      }; 

     Ext.create('Ext.panel.Panel', { 
      title: 'Choose a future date:', 
      width: 300, 
      bodyPadding: 10, 
      renderTo: Ext.getBody(), 
      items: [{ 
       xtype: 'datepicker', 
       id: 'date1', 
       minDate: new Date(), 
       handler: function(picker, date) { 
        processRequest(); 
       } 
      }, { 
       xtype: 'datepicker', 
       id: 'date2', 
       minDate: new Date(), 
       handler: function(picker, date) { 
        processRequest(); 
       } 
      }] 
     }); 
    } 
}); 
Смежные вопросы