微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 如何从JSONStore w / ISO 8601格式保存记录时让ExtJS包含时区?

在下面的代码片段中,我创建了一个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') + '"';
};

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐