2017-06-25 5 views
0

新しい投稿があります。 私はグリッドを持っています。 新しい行スクリプトautomaticalyを追加すると、そこに時間time_start = Ext.Date.format(new Date(), '2008-01-01\\TH:i:s');が置かれ、うまく動作し、extjs automaticalyがサーバー時間に送信します。 しかし、グリッドを見るときには、時間が3時間あります。 たとえば、ローカル時間が23.00.00の場合、extjsはサーバー「2008-01-01T23:00:00」に送信しますが、グリッド「02:00」に表示されます。 「23:00」と表示されている必要があります。 セルビューに+3時間を追加しました。何が間違っていますか?正しいタイムゾーンextjs 6で日付をレンダリングする方法は?

Ext.require(['Ext.data.*', 'Ext.grid.*']); 


    // Создаем model 
    Ext.define('Users', { 
     extend: 'Ext.data.Model', 
     //idProperty: 'id', 
     fields: [{ 
       name: 'id', 
       type: 'int' 
      } 
     ] 
    }); 

    Ext.onReady(function() { 
     // Создаем store 
     var store = Ext.create('Ext.data.Store', { 
       autoLoad: true, 
       autoSync: true, 
       model: 'Users', 
       proxy: { 
        type: 'ajax', 
        url: 'server.php', 
        api: { 
         create: 'server.php?action=create', 
         read: 'server.php?action=read', 
         update: 'server.php?action=update', 
         destroy: 'server.php?action=delete' 
        }, 
        reader: { 
         type: 'json', 
         rootProperty: 'data' 
        }, 
        writer: { 
         type: 'json', 
         encode: true, 
         rootProperty: 'dataUpdate', 
         allowSingle: false, 
         writeAllFields: true, 
         //root:'records' 
        }, 
        actionMethods: { 
         create: 'GET', 
         read: 'GET', 
         update: 'GET', 
         destroy: 'GET' 

        } 
       }, 
       listeners: { 
        write: function(store, operation) { 
         var record = operation.getRecords()[0], 
          name = Ext.String.capitalize(operation.action), 
          verb; 


         if (name == 'Destroy') { 
          verb = 'Destroyed'; 
         } else { 
          verb = name + 'd'; 
         } 
         //Ext.example.msg(name, Ext.String.format("{0} user: {1}", verb, record.getId())); 

        } 
       } 
      } 


     ); 

     var grid = Ext.create('Ext.grid.Panel', { 
      renderTo: document.body, 
      //plugins: [rowEditing], 
      // Редактирование 
      plugins: { 
       ptype: 'cellediting', 
       clicksToEdit: 1 
      }, 
      listeners: { 
       edit: function() { 

       } 
      }, 
      width: 1000, 
      height: 330, 
      frame: true, 
      title: 'Users', 
      store: store, 
      iconCls: 'icon-user', 
      columns: [{ 
        text: 'id', 
        width: 50, 
        sortable: true, 
        dataIndex: 'id', 
        renderer: function(v, meta, rec) { 
         return rec.phantom ? '' : v; 
        } 
       }, 
       { 
        header: 'Дата', 
        width: 70, 
        // sortable: true, 
        dataIndex: 'date', 
        renderer: Ext.util.Format.dateRenderer('d/m/Y'), 
        editor: { 
         completeOnEnter: false, 
         field: { 
          xtype: 'datefield', 
          dateFormat: 'd/m/Y', 
          allowBlank: false 
         } 
        } 
       }, 
       { 
        header: 'Время начала', 
        width: 120, 
        // sortable: true, 
        dataIndex: 'time_start', 
        //format: 'H:i', 
        // Нужно для верного отображеия времени после редактирования в таблице 
        renderer: Ext.util.Format.dateRenderer('H:i'), 
        editor: { 
         completeOnEnter: false, 
         field: { 
          xtype: 'timefield', 
          format: 'H:i', 
          //name: 'timeStart1', 
          //fieldLabel: 'Time In', 
          minValue: '8:00', 
          maxValue: '20:00', 
          increment: 30, 
          anchor: '100%', 
          allowBlank: false 
         } 
        } 
       } 

      ], 
      dockedItems: [{ 
       xtype: 'toolbar', 
       items: [{ 
        text: 'Add', 
        iconCls: 'icon-add', 
        handler: function() { 
         // Создаем новую задачу 
         // Для корректной работы с БД нужно задать ID новой строки, равной +1 от последней ID из таблицы. 
         var rec = new Users(); 
         //console.log (x);("rec data= " + rec.id + " -- " + rec.data.id); 
         var idArr = grid.store.data.items; 
         var idValue = []; 
         for (var i = 0; i < idArr.length; i++) { 
          idValue.push(idArr[i].id); 
         } 
         idValue.sort(function(a, b) { 
          return a - b; 
         }); 
         var maxId = idValue[idValue.length - 1]; 
         console.log(maxId); 
         rec.id = maxId + 1; 
         rec.data.id = maxId + 1; 

         rec.date = Ext.Date.format(new Date(), 'Y-m-d'); 
         rec.data.date = Ext.Date.format(new Date(), 'Y-m-d'); 

         rec.time_start = Ext.Date.format(new Date(), '2008-01-01\\TH:i:s'); 
         rec.data.time_start = Ext.Date.format(new Date(), '2008-01-01\\TH:i:s'); 
         store.insert(0, rec); 
         //store.add(rac); 
         //grid.getView().refresh(); 
         // rowEditing.startEdit(rec, 0); 
        } 
       }, '-', { 
        itemId: 'delete', 
        text: 'Delete', 
        iconCls: 'icon-delete', 
        disabled: false, 
        handler: function() { 
         var selection = grid.getView().getSelectionModel().getSelection()[0]; 
         if (confirm('Вы действительно хотите удалить задачу №' + selection.id + " ?")) { 
          // Удлаяем  
          if (selection) { 
           store.remove(selection); 
          } 
         } 
        } 
       }] 
      }] 
     }); 
    }); 
+0

タイムゾーンマッピングで問題があるようです –

+0

@SandunPriyankaどのように修正するのですか? – Masquitos

答えて

0

あなたは、あなた自身の日付時刻形式を指定することができ、カラム

renderer : function(value){ 
    var serverDate = new Date(value{2015-12-04T10:39:22}); 
    var newFrmDate = Ext.Date.format(serverDate,'m-d-Y h:i A'); 
    return newFrmDate; 
} 

にレンダラを記述する必要があります。

関連する問題