rails db不会将字符串保存为m / d / y格式的日期?

时间:2012-10-14 16:28:44

标签: ruby-on-rails ruby-on-rails-3 date

将字符串保存到我的数据库作为日期并有一些奇怪的结果

如果日期格式为,

dd / mm / yy它将保存

如果日期格式为,

mm / dd / yy无法以静默方式保存

如果我去,我在我的控制台中

'20/10/2012'.to_date 
 => Sat, 20 Oct 2012 

它有效

如果我去

'10/20/2012'.to_date
=> ArgumentError: invalid date ...

它打破了

我使用初始化程序将我的默认日期格式设置为%m /%d /%Y,您可以看到它准确地反映在我的DATE_FORMATS哈希中。

Date::DATE_FORMATS
=> {:short=>"%e %b", :long=>"%B %e, %Y", :db=>"%Y-%m-%d", :number=>"%Y%m%d", :long_ordinal=>#<Proc:0x007f8663f1aae0@/Users/ian/.rvm/gems/ruby-1.9.3-p0@rails-3.2/gems/activesupport-3.2.1/lib/active_support/core_ext/date/conversions.rb:12 (lambda)>, :rfc822=>"%e %b %Y", :default=>"%m/%d/%Y"}

不确定问题的原因是什么,因为事情似乎正确配置。如何解决?

谢谢你!

2 个答案:

答案 0 :(得分:3)

尝试:

DateTime.strptime('20/10/2012', '%d/%m/%Y')

如果您不需要相关时间,请使用日期:

Date.strptime('20/10/2012', '%d/%m/%Y')

答案 1 :(得分:2)

使用gem american_date

在宝石文件中 宝石'american_date'

现在它将保存mm / dd / yyyy日期格式。