5

我很难让三合会 rails+angularjs+jQuery datepicker 一起工作。

第一个问题是显示从后端检索到的日期。当 UI 从后端请求数据时,在某些时候,它会以 JSON 表示法接收以下内容。

{"id":1,"ragione_sociale":"FrigoCaserta srl","indirizzo":"Strada provinciale Gricignano d'Aversa","cap":"81030","citta":"Gricignano d'Aversa","provincia":"CE","partita_iva":"1234","codice_fiscale":null,"tipo_contratto":"Orario","costo":"0.0","inizio":"2012-05-01","fine":"2013-09-22","$$hashKey":"005"}

相关字段是“inizio”和“fine”(分别是开始日期和结束日期)。

Rails 时区设置为欧洲/罗马。

Datepicker 的选项设置为:{dateFormat: 'dd/mm/yy'}

因此,我希望输入字段将“inizio”日期显示为:01/05/2012,但相反,我返回:24/03/2018。

将 dateFormat 选项更改为 'yy-mm-dd' 显示正确的日期,但带有不需要的分隔符和格式 (2012-05-01) ...

然而,在幕后发生的事情是,显示的对象受到了一些操纵,变成了这样:

{"id":1,"ragione_sociale":"FrigoCaserta srl","indirizzo":"Strada provinciale Gricignano d'Aversa","cap":"81030","citta":"Gricignano d'Aversa","provincia":"CE","partita_iva":"1234","codice_fiscale":null,"tipo_contratto":"Orario","costo":"0.0","inizio":"2012-04-30T22:00:00.000Z", ...

请注意,“inizio”字段现在从“2012-05-01”转换为“2012-04-30T22:00:00.000Z”

现在,当我将表单提交到后端时,一切都会失败,因为 rails 接收到由 datepicker 格式化的“inizio”的新值。只是一个 Date 的数据库字段使有关时间的信息消失了,剩下的只是持久化到模型中的(错误的)日期。

我知道 datepicker 具有本地化选项,但我找不到任何与时区相关的内容,我可以更改以修复这种不需要的行为。

我以为我可以使用后端模型上的属性来解析来自 UI 的信息,但我不喜欢这种方法。

处理所有这些时要遵循的最佳做法是什么?

我已经通过 StackOverflow 类似的问题没有运气。

在此先感谢您的帮助。

4

1 回答 1

0

一旦这个拉取请求进入核心,它应该会更容易,因为资源将支持一个解码器,可以在其中完成这个字符串到日期的转换。 https://github.com/angular/angular.js/pull/1514

于 2012-12-20T22:58:54.830 回答