4

文字列を日付としてデータベースに保存し、奇妙な結果を得る

日付が次のようにフォーマットされている場合、

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"}

正しく構成されているように見えるため、ここで問題の原因が不明です。解決する方法は?

ありがとう!

4

2 に答える 2

3

試す:

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

または、関連付けられた時間が必要ない場合は、Date を使用します。

Date.strptime('20/10/2012', '%d/%m/%Y')
于 2012-10-14T17:19:11.283 に答える
2

gem american_dateを使用する

gem ファイル内の gem 'american_date'

mm/dd/yyyy の日付形式で保存されるようになりました。

于 2016-06-09T09:54:59.557 に答える