3

Rails 2.3 から 3.2 にアップグレードしていますが、日付の変換に問題があります。

Rails 2.3 では、日付変換のデフォルト形式は mm/dd/yyyy でした。この形式の文字列を active_record モデルに割り当てると、日付が正しく変換されます。例えば

私はユーザーオブジェクト(active_recordオブジェクト)を持っています

レール2.3で

user.registered_on = "10/03/2013" #=> Oct 3, 2013

しかし、Rails 3.2でも同じこと

user.registered_on = "10/03/2013" #=> March 10, 2013

これを修正する方法は?

初期化ファイルの 1 つで Date::DATE_FORMATS[:default] = '%m/%d/%Y' を設定しようとしましたが、これはうまくいきません。

日付のロケールも設定していますが、それもうまくいきません。

この問題を再現する完璧な方法の 1 つは、次のとおりです。

  1. rails 2.3.x バージョンと rails 3.2.x バージョンの 2 つのアプリを作成します。

  2. 少なくとも 1 つの datetime フィールドを使用して、アプリケーションごとに 1 つのモデルを作成します。

  3. 両方のアプリケーションのデータベースを作成して移行します。

  4. 各アプリケーションのターミナルから Rails コンソールに移動します。

  5. active_record モデル オブジェクトを作成し、この "10/3/2013" 文字列を datetime フィールドに割り当てて、結果が両方とも異なる日付であることを確認します。

この日付または日時の変換を修正してRails 2.3と同じにする方法が必要です

4

2 に答える 2

1

gem "american_date" solved this problem.

https://github.com/jeremyevans/ruby-american_date

于 2013-10-14T11:33:40.877 に答える