17

Rails アプリケーションの日付形式で問題が発生しました。

私たちのビューには、dd/mm/yyとしてフォーマットしたい日付フィールドがあります。これは、ユーザーが日付を入力する方法であり、datepicker コントロールはこの形式を使用します。

ただし、Active Record はmm/dd/yyを期待しているようです。

01/03/2010と入力すると、これは03 January 2010として入力されます。

25/03/2010と入力すると、これはnullになります。

ActiveRecord に女王陛下の日付形式を期待させるにはどうすればよいですか?

4

3 に答える 3

21

Rails の DateTime は、フォーマットを自動的に検出しようとします。次の形式を検出します:mm/dd/yyまたはdd-mm-yyまたはyyyy-mm-ddまたはyyyy/mm/dd. モンキー パッチを適用することもできますが、この問題をアプリケーションのビューDateTime.parseに移したいと思います。

yyyy-mm-dd [hh:mm:ss]日付の文字列表現として使用することを常にお勧めします。複数の日付形式をサポートしている場合は、DatePicker のドキュメントを確認してください。

たとえば、jQuery の日付ピッカーでは、dateFormat(サーバーに送信されるデータの場合、これを に設定yyyy-mm-dd) とaltFormat(ユーザーに表示される入力の場合、これを に設定) でカバーされていますdd/mm/yyyy

于 2010-03-27T16:44:17.207 に答える
12

rails_defaults.rbディレクトリに呼び出されるファイルを追加しますconfig\initializers。次の行で:

Date::DATE_FORMATS[:default] = '%d/%m/%Y'
Time::DATE_FORMATS[:default]= '%d/%m/%Y %H:%M:%S'

サーバーを再起動すると、準備完了です。

于 2010-03-27T21:37:13.607 に答える
2
class Date
  class << self
    def _parse_with_us_format(date, *args)
      if date =~ %r{^(\d+)/(\d+)/(\d+)$}
        _parse_without_us_format("#{$3.length == 2 ? "20#{$3}" : $3}-#{$1}-#{$2}", *args)
      else
        _parse_without_us_format(date, *args)
      end
    end
    alias_method_chain :_parse, :us_format
  end
end
于 2012-01-12T20:13:13.110 に答える