2011-12-22 45 views
2

所以我有這個小的Extjs應用程序,它由一個網格與用戶組成。每個用戶都有一個字段,我從服務器將他訂閱的日期作爲時間戳值(unix)發送。Extjs檢索和寫入時間戳

Ext.define('AP.model.User', { 
     extend: 'Ext.data.Model', 
     fields: [ 
     { name: 'id', type: 'int', persist : false }, 
     { name: 'date_added', type: 'date', dateFormat: 'timestamp'}, 
     { name: 'username', type: 'string', persist : false } 
    ] 
}); 

網格有一個渲染器,所以我可以使該時間戳爲人類可讀的格式,如29-Oct-2011 04:00 am

... 
{ 
    header: 'Date added', 
    align: 'center', 
    sortable: true, 
    dataIndex: 'date_added', 
    width: 140, 
    fixed: true, 
    renderer: Ext.util.Format.dateRenderer('d-M-Y h:i a') 
} 
... 

現在,一切都按預期工作,正確顯示的值,但是,我也有一個表格來編輯每個記錄的一部分。在我的表單中,我可以通過提供一個允許我選擇日期的字段xtype: 'datefield'來編輯添加日期字段。當我爲我的記錄選擇一個新日期時,它會顯示類似11/29/2011(從我上面的日期),但是當我提交該表單以更新記錄時,它在請求有效載荷中發佈類似如下內容:{"date_added": "NaN-NaN-NaNTNaN:NaN:NaN"}

任何人都可以闡明如何在Extjs中將日期保存在作爲時間戳檢索的字段上?

回答

0

嘗試像這樣在你的數據字段:

{xtype: 'datefield', 
    anchor: '100%', 
    fieldLabel: 'Date', 
    name: 'date', 
    format: 'm d Y'} 

和格式更改爲 'd-M-Y H:我一個'

+0

的形式輸入顯示按本格式,但發送到服務器的請求有效載荷仍然'「DATE_ADDED」:「南NAN-NaNTNaN:楠:NAN」' – 2011-12-22 13:49:19

+0

我猜請求有效載荷是什麼extjs數字作爲從Unix到日期的轉換,但我發送的實際上是日期字符串而不是unix時間戳。 – 2011-12-22 14:50:53

+0

將模型中的「dateFormat」更改爲「d-M-Y h:i a」。 告訴它是否有幫助。 – Hadas 2011-12-25 06:01:07

2

我最近做這個用的GridPanel。

即使從數據庫爲時間戳,使用type: date數據恢復工作對我很好......

// DATA MODEL 
Ext.define('Particle', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     { name: 'particle_id', type: 'long' }, 
     { name: 'name', type: 'string' }, 
     { name: 'type', type: 'string' }, 
     { name: 'start_date', type: 'date' }, 
     { name: 'sched_date', type: 'date' }, 
     { name: 'sched_time', type: 'date' }, 
     { name: 'notes', type: 'string' } 
    ] 
}); 

我提供的日期值如下列模型,注意renderer:配置選項。 (我正在使用field:配置選項,因爲我在此使用了grideditor擴展來允許在網格上對數據進行在線編輯 - 如果您以單獨形式編輯值,則不需要此操作。)

// GRID COLUMN MODEL 
    var columns = [ 
     {text: "Name", flex: 1, sortable: true, dataIndex: 'name', renderer: function(data,meta,record){meta.attr = 'ext:qtitle="Notes:"ext:qtip="' + record.get('notes') + '"'; return data;}}, 
     {text: "Type", width: 55, sortable: true, dataIndex: 'case_lvl'}, 
     {text: "RF Started", width: 80, sortable: true, dataIndex: 'start_date', renderer: Ext.util.Format.dateRenderer('j-M-Y')}, 
     {text: "Sched Date", width: 80, sortable: true, dataIndex: 'sched_date', field: 'datefield', renderer: Ext.util.Format.dateRenderer('j-M-Y')}, 
     {text: "Sched Time", width: 80, sortable: true, dataIndex: 'sched_time', field: 'timefield', renderer: Ext.util.Format.dateRenderer('g:i A')} 
    ]; 

要回答你的問題具體,我用Ext.Date.format挑選出來的字段返回的日期值到數據庫的時刻字符串()。您可以在提交表單之前添加此項。

schedDate = Ext.Date.format(Ext.getCmp('schedDate').getValue(),'Y-m-d') + Ext.Date.format(Ext.getCmp('schedTime').getValue(),' H:i:s')