[英]How to get ExtJS to include timezone when saving record from JsonStore w/ISO 8601 format?
在下面的代碼片段中,我正在創建一個 JsonStore(其記錄類型是單個日期字段),向其中添加一條新記錄,然后保存它。 保存時,時區不包含在序列化日期值中,即使它包含在實際記錄對象中(如 Firebug 所示)。 Ext 似乎將日期轉換為瀏覽器的時區,但隨后在向服務器發送請求時刪除時區。 我使用的是 ISO 8601 日期時間格式 ( 'c'
),如果我正確閱讀 Ext 文檔,應該包括時區。
即使它正在轉換為瀏覽器的時區,只要在保存記錄時包含該時區,這對我來說也不是問題。 就目前而言,必須編寫服務器,以便它解析瀏覽器時區中的傳入日期,但將它們發送到可能在不同時區中的客戶端,這看起來很笨拙。 有什么建議? 我在 Ext 論壇上通讀了幾個看似相關的問題,但它們似乎處理的問題略有不同。
var myDataStore = new Ext.data.JsonStore({
url: '/api/echo',
writer: new Ext.data.JsonWriter({
encode: false,
writeAllFields: true
}),
root: 'records',
fields: [
{name: 'myDate', type: 'date', dateFormat: 'c'}
],
autoSave: false,
autoLoad: false
});
myDataStore.add(new myDataStore.recordType({myDate: Date.parseDate('2010-11-08T11:00:00.000-0000','c')}));
myDataStore.save();
序列化數據(無時區):
{"records":{"myDate":"2010-11-08T06:00:00"}}
更新 Ext-JS 4 的答案:
Ext.JSON.encodeDate = function(o)
{
return '"' + Ext.Date.format(o, 'c') + '"';
};
沒關系,顯然神奇的谷歌短語是“extjs time zone serialize”。 這似乎是一個已知問題。 解決方案似乎相當簡單:
Ext.util.JSON.encodeDate = function(o)
{
return '"' + o.format('c') + '"';
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.