ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-07-30 09:46:29  阅读:225  来源: 互联网

标签:javascript timezone datetime 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') + '"';
};

标签:javascript,timezone,datetime,extjs
来源: https://codeday.me/bug/20190730/1580890.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有