Skip to main content
 首页 » 编程设计

jQuery 日期选择器 + Rails 3.2.8 + AngularJS : show and persist date issue

2026年10月07日3daizhj

我很难让三元组 Rails+Angularjs+jQuery 日期选择器一起工作。

第一个问题是显示从后端检索的日期。 当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 时区设置为欧洲/罗马。

日期选择器的选项设置为:{dateFormat: 'dd/mm/yy'}

因此我希望输入字段将“inizio”日期显示为:01/05/2012 但是,我回来了:2018 年 3 月 24 日。

将 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 收到了 由日期选择器格式化的“inizio”的新值。数据库字段只是一个日期,使得有关时间的信息消失,剩下的只是保留在模型中的(错误的)日期。

我知道日期选择器有本地化选项,但我找不到任何与时区相关的内容,我可以更改以修复此不需要的行为。

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

处理所有这些问题时应遵循的最佳实践是什么?

我在 StackOverflow 上遇到过类似的问题,但没有运气。

预先感谢您的帮助。

请您参考如下方法:

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