我正在从rails 2.3升级到3.2,而我在转换日期时遇到了问题。
在rails 2.3中,日期转换默认格式为mm / dd / yyyy,当我将此格式的字符串分配给active_record模型时,它会正确转换日期。例如。
我有一个用户对象(active_record对象)和
在rails 2.3中
user.registered_on = "10/03/2013" #=> Oct 3, 2013
但是在rails 3.2中也是如此。
user.registered_on = "10/03/2013" #=> March 10, 2013
如何解决这个问题?
我已尝试在其中一个初始值设定项文件中设置Date :: DATE_FORMATS [:default] ='%m /%d /%Y',但这没有任何好处。
我甚至为日期设置了区域设置,但这也不起作用。
重现此问题的一个完美方法是:
创建两个应用程序,一个在rails 2.3.x版本中,另一个在rails 3.2.x版本中。
使用至少一个日期时间字段在每个应用程序中创建一个模型。
为两个应用程序创建和迁移数据库。
在每个应用程序中从终端转到rails控制台。
创建一个active_record模型对象,并将此“10/3/2013”字符串分配给datetime字段,并查看结果是不同的日期。
我只需要一个解决方案,如何修复此日期或日期时间转换并使其与rails 2.3相同
答案 0 :(得分:1)
gem“american_date”解决了这个问题。
答案 1 :(得分:0)
我猜你已升级了ruby版本?
$ ruby --version
ruby 1.8.7
$ ruby -r date -e "puts Date.parse('10/3/2013').month"
10
$ ruby --version
ruby 1.9.3p327
$ ruby -r date-e "puts Date.parse('10/3/2013').month"
3