0

问题:在 Sencha Touch 2 应用程序的模型实例中的日期字段中获取一个类似于“2012-11-11T04:27:25Z”(这是 Rails 应用程序的默认日期输出)的 JSONP 响应中的日期没有它是一个无效的日期。

背景:我有一个生成 JSONP 的 Rails 应用程序,我将其读入我的 Sencha Touch 2 应用程序中的商店,并且由 Rails 格式化的日期作为无效日期进入 Sencha Touch 2 应用程序。

重现:要重现此问题的问题并复制错误,请使用下面的小提琴。注意:我通过将数据硬连接到存储中,将 Rails 服务器从图片中删除,日期格式与 Rails 应用程序输出它们的方式相同。因此,换句话说,我通过模仿我的 Rails 应用程序在服务器端所做的事情,在 Sencha Touch 2 应用程序中本地重现了整个问题。

小提琴: http ://www.senchafiddle.com/#7qQkb 。要查看问题,请从 Webkit 浏览器运行 Fiddle 并查看 Webkit 开发人员工具中的 JavaScript 控制台。

症状:将发生的情况是应用程序中的 List 组件创建的 XTemplate 执行代码(在 {[]} 括号内)以输出日期以供您在控制台中检查。当您检查输出的日期时,您将看到:__proto__: Invalid Date。日期仍会在视图中正常显示,但由于它是无效日期,我无法格式化日期或检索日期对象的不同部分。

我的问题是:我可以对我的模型或我的商店,或者我的 Rails 应用程序做些什么,以将日期放入模型实例而不是无效日期?

4

2 回答 2

1

你看到的只是 Date 原型中 toString 方法的返回值

Date.prototype.toString(); // "Invalid Date"

这就是为什么所有的“日期”都说完全相同的原因。但是,这并不意味着日期是错误的!在 extjs 中,如果你想在你的模型中格式化一个日期字段,你应该使用:

{ name: 'timestamp', type: 'date', dateFormat: "Y-m-d H:i" }

但是如果你只想格式化它以显示它,你可以使用你使用的格式,命名的内置格式之一或我在示例中使用的相同格式:Ymd H:i

于 2012-12-26T18:14:28.130 回答
0

我已经通过更多的研究回答了这个问题。Rails 在 JSON / JSONP 响应中表示日期的默认方式对于 Sencha Touch 2 来说已经足够了。__proto__日期对象的属性将始终表示为无效日期,但您仍然可以通过Ext.Date.format()在 XTemplate 对象中使用来操纵日期,如下所示:

'<p>{[Ext.Date.format(values.timestamp, "F d, Y g:i A")]}</p>'

timestamp您希望格式化的日期在哪里。)

它在控制台中显示为无效日期这一事实无关紧要。

于 2012-12-26T17:46:01.470 回答