如何在extjs中显示时间和日期

时间:2010-01-14 18:18:39

标签: extjs

如何在网格面板中显示日期/时间。该日期来自服务器端asp.net Web服务:

{9/14/2009 10:23:00 AM}

我在显示日期和时间时遇到错误。它显示NaN/NaN/NaN 12:NaN:NaN PM

var store = new FMP.AspNetJsonStore({
            fields: [
                      { name: 'DateOccurred'}
                     ],
 });

var dateRenderer = Ext.util.Format.dateRenderer('m/d/Y h:i:s A');

 { header: xppo.st('SDE_DATE_OCCURRED'), width: 75, sortable: true,
     dataIndex: 'DateOccurred', renderer: dateRenderer },

在商店中,如果我定义字段:

[ { name: 'DateOccurred', type: 'date', dateFormat: 'm/d/Y'} ],

...它显示一个空白字段。

请在这个问题上帮助我。

2 个答案:

答案 0 :(得分:6)

指定的dateFormat必须与日期字符串完全匹配才能进行解析。格式'm / d / Y'失败,因为它缺少时间组件而'm'需要2个月的月份。成功解析示例日期字符串的dateFormat是:

'n/d/Y H:i:s A'

您还可以尝试省略dateFormat,同时将字段的类型设置为“date”。如果没有特定的格式,ExtJS将重新使用Date.parse。

答案 1 :(得分:0)

我同意owlness但我想在这个答案中添加更多评论,因为我已经以多种形式遇到过它。

有一件事要看你的浏览器。我注意到编码时解决了这个问题,我的浏览器会进入兼容模式并下载到IE 8,然后在使用IE 11时显示此问题,这要归功于我在我的营业地点的注册表设置。要解决网页上的兼容模式问题,请尝试将以下HTML元标记添加到调用Ext JS应用文件的初始HTML页面中。

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

您的网格列或其他xtype对象是否设置为日期字段,您的模型是实际使用日期列类型的模型。查看“模型”字段,并将有问题的日期字段type()设置为日期,如下所示:

type: 'date',
...

要查看的另一个项目是验证从服务器调用中获取的数据的格式。看起来你得到一个直接的JSON序列化Date对象。我已经看到这些对象也返回{"Date":"2014-09-18T00:00:00" ...},并且序列化数据中的T字符导致了问题。

如果您需要针对此类方案进行格式化,请在dateFormat()配置设置中使用转义字符设置您的模型。以下是使用其中的转义字符进行设置的示例:dateFormat: 'Y-m-d\\TH:i:s',

最后,我的最后决议是,如果您的日期仍然出现问题并且上述建议都不适合您,请尝试设置dateReadFormat()dateWriteFormat()配置设置,这些设置将覆盖我们讨论的第一个设置dateFormat()。我不知道为什么但由于某种原因使用这两个单独的设置已经解决了我的日期问题,其中单日期格式配置设置没有。这可能与作家有关,我现在还不清楚。

代码可能看起来与此类似:

...    
dateReadFormat: 'Y-m-d\\TH:i:s',
dateWriteFormat: 'Y-m-d\\TH:i:s',
...

我希望这可以帮助那里的一些人......