web-dev-qa-db-ja.com

Rails UTCなしの3つのデフォルトの日時フォーマット

私は新しいRails 3アプリを作成しています。その中のいくつかのフィールドにDateTimeを使用していますが、すべての日時フィールド標準にはUTCがあります(ビュー内)のような:

2010-10-10 16:19:00 UTC

UTC部分を削除するにはどうすればよいですか?

更新:ここに私が持っているものがあります:

<%= trip.truckleft.strftime("%Y-%m-%d %H:%M") %>

だから今私がしなければならないことはそれをヘルパーに入れることですが、より普遍的な方法はありませんか?

他の投稿を見ましたが、time_formats.rbイニシャライザでは、しかし、私はそれを成功させることができませんでした。

ご協力いただきありがとうございます!

47
Paintrick

別の-おそらく現在好まれている-方法は Railsの国際化とローカリゼーションのサポート を使用することです。このガイドには学ぶべきことがたくさんあるので、tl; drバージョンは次のとおりです。

<%= l trip.truckleft, :format => :long %>

事前定義されたいくつかの日付と時刻の形式 like :longすでに英語で利用できます。また、config/locales/en.ymlこれらの例のYAML構造に従う。まだi18n/l10n全体にあまり興味がなく、常にlメソッドを見るのがわかりにくい場合は、以下を使用することもできます。

<%= trip.truckleft.to_formatted_s(:long) %>
65
ches

これが最終的に私のために働いたものです:

新しいファイルを作成しました:

config/initializers/

名前:time_formats.rb

そして、これをそのファイルに追加しました:

Time::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"

その後、サーバーを保存して再起動すると、動作し始めました。

42
Paintrick

私はi18nを使用して日付をフォーマットし、これをen.ymlに入れています:

date:
  formats:
    default: "%m/%d/%Y"

私はモデルが日付を表示する方法のためにそのフォーマットを再利用したかったので、私のconfig/initializers/time_formats.rbにはこれが含まれています:

Date::DATE_FORMATS[:default] = lambda { |date| I18n.l(date) }
26
jankubr

正確には、これらを初期化子に入れる必要があります。

Date::DATE_FORMATS[:default] = "%m-%d-%Y"
Time::DATE_FORMATS[:default] = "%m-%d-%Y %H:%M"

日時がある場合、2番目の日時が機能します(例:モデルのcreated_at)。

14

for Rails 3

追加 config/environment.rb

my_datetime_formats = { :default => '%F %T' } #or any other you like
my_date_formats = { :default => '%F' } #or any other you like

Time::DATE_FORMATS.merge!(my_datetime_formats)
Date::DATE_FORMATS.merge!(my_date_formats)

(他の回答との違い-merge! 方法)

1
okliv

config/environment.rbファイルの最後に次の行を追加できます。

Date::DATE_FORMATS[:default] = "%Y-%m-%d %H:%M"
1
Daniel O'Hara