ActiveRecord / Rails 3 中的日期格式

Posted

技术标签:

【中文标题】ActiveRecord / Rails 3 中的日期格式【英文标题】:Date formats in ActiveRecord / Rails 3 【发布时间】:2011-02-26 19:33:20 【问题描述】:

在我的模型中,我有一个出发日期和一个返回日期。

我使用的是 text_field 而不是 date_select,以便我可以使用 JQuery 日期选择器。

我的应用程序目前位于美国,但我确实希望获得国际会员。

所以基本上这就是正在发生的事情。用户(美国)输入日期,例如 04/01/2010(4 月 1 日)。

当然,mysql 将其存储为日期时间,例如 2010-04-01...

无论如何,当用户稍后去编辑日期时,它会显示“01/04/2010”,因为我使用的 strftime("%m/%d/%Y) 没有意义.. ..所以它认为是 1 月 4 日,而不是原来的 4 月 1 日。

就像准确存储数据的唯一方法是用户输入:2010-04-01

我希望所有这些都有意义。我真正追求的是一种让用户以原生格式输入(或使用日期选择器)日期的方法。

因此,欧洲的某个人可以输入 01/04/2010 来表示 4 月 1 日,但美国的某个人可以输入 04/01/2010。

有没有简单、优雅的解决方案?

感谢您的任何建议。

【问题讨论】:

【参考方案1】:

我最近也遇到了同样的问题。

我的网站位于法国,所以我必须将日期存储为法国日期。

我也使用 Jquery DatePicker。

为此,我将 I18n.locale 设置为访问者所在的国家/地区。例如:

I18.locale = :fr

您可以在 application_controller 中使用 before_filter 来做到这一点

然后,您可以在 locales/fr.yml 中定义显示日期的方式

最后,在您的视图中,您可以使用 JqueryDatePicket 属性设置日期格式视图。

如果我没记错的话,这个方法是这样的:

$.datepicker.formatDate('dd-mm-yyyy');

无论如何,您都可以在 datepicker 文档中找到它。

这种格式可以在你的 locale/fr.yml 中找到,例如

仅此而已!

希望这会有所帮助!

【讨论】:

谢谢!我会检查一下。

以上是关于ActiveRecord / Rails 3 中的日期格式的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Arel(大概)创建一个不影响 Rails 3 中的查询的 ActiveRecord 范围?

Rails 6.1.4 中的 ActiveRecord 枚举行为更改

如何从 Rails 中的查询中排除 id 数组(使用 ActiveRecord)?

如何毫无例外地选择Array Rails ActiveRecord中的ID

Rails 3 包括翻译 globalize3 activerecord

Rails 的 ActiveRecord 序列化:attr 方法给出“缺少类或模块错误”