質問

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

ビュー内に次のようにフォーマットしたい日付フィールドがあります。 日/月/年. 。これは、ユーザーが日付を入力することを期待する方法であり、日付ピッカー コントロールはこの形式を使用します。

ただし、Active Recordは期待しているようです 年/月/日.

入ったら 01/03/2010, 、これは次のように入力されます 2010 年 1 月 3 日.

入ったら 25/03/2010, 、これは ヌル.

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

役に立ちましたか?

解決

Railsの日時に自動的に書式設定を検出しようとします。 mm/dd/yyまたはdd-mm-yyまたはyyyy-mm-ddまたはyyyy/mm/dd:それは次の形式を検出します。あなたは猿 - パッチDateTime.parseをできたが、私はむしろ、表示アプリケーションのにこの問題を移動します。

私はいつも日付の文字列表現としてyyyy-mm-dd [hh:mm:ss]を使用することをお勧めします。それは、複数の日付の形式をサポートしている場合、あなたの日付ピッカーのマニュアルを参照してください。

例えばjQueryの日付ピッカーは、これはdateFormat(サーバーに送信されるデータについて、yyyy-mm-ddに設定し)、ならびにaltFormat(ユーザが見て入力するため、dd/mm/yyyyに設定し)で覆われています。

他のヒント

rails_defaults.rbディレクトリにconfig\initializersという名前のファイルを追加します。

:次の行を含みます
Date::DATE_FORMATS[:default] = '%d/%m/%Y'
Time::DATE_FORMATS[:default]= '%d/%m/%Y %H:%M:%S'

サーバを再起動し、あなたが行ってもいいです。

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top