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