在下面的代码片段中,我创建了一个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] 举报,一经查实,本站将立刻删除。