[英]Change default Ruby Time format
我不得不將“.strftime(”%H:%M“)”附加到我在Rails項目中顯示時間的任何內容。 我有每個Concert對象的開始時間和結束時間,因此每當我想顯示那些時間時,我必須附加“.strftime(”%H:%M“)。
請注意,我不是要求更改日期格式。 日期看起來很好(如MM / DD / YYYY)。
什么是最好的解決方法? 有沒有辦法設置默認時間格式?
(我很確定這只是一個Ruby的東西,但我是新手,所以我不確定。)
由於您正在使用Rails,請利用I18n支持: http : //guides.rubyonrails.org/i18n.html#adding-date-time-formats
# config/locales/en.yml
en:
time:
formats:
default: "%H:%M"
然后當你調用I18n.l Time.now
或<%= l Time.now %>
,它會自動使用該格式。
Ruby on Rails具有用於格式化Date
和Time
實例的內置預設。 這是他們在我的機器上的Time
:
>> Time::DATE_FORMATS
=> {:short=>"%d %b %H:%M", :db=>"%Y-%m-%d %H:%M:%S", :rfc822=>#<Proc:0x0000000103700b08@/Users/donovan/.gem/gems/activesupport-3.0.1/lib/active_support/core_ext/time/conversions.rb:13>, :time=>"%H:%M", :number=>"%Y%m%d%H%M%S", :long_ordinal=>#<Proc:0x0000000103700e50@/Users/donovan/.gem/gems/activesupport-3.0.1/lib/active_support/core_ext/time/conversions.rb:12>, :long=>"%B %d, %Y %H:%M"}
您可以像這樣輕松使用它們:
>> Time.now.to_s(:db)
=> "2011-01-12 15:26:11"
您也可以定義自己的並使用它:
>> Time::DATE_FORMATS[:mine] = "%H:%M"
=> "%H:%M"
>> Time.now.to_s(:mine)
=> "15:28"
您可以在application_helper.rb文件中創建自定義函數。 也許是這樣的:
def custom_time(date)
date.strftime("%H:%M")
end
不確定這是否是最佳做法,但它應該運作良好。
我使用初始化器:config / initializers / time_formats.rb,其中包含:
[Time, Date].map do |klass|
klass::DATE_FORMATS[:app_date] = "%m/%d/%Y"
klass::DATE_FORMATS[:app_month_and_year] = "%B %Y"
klass::DATE_FORMATS[:app_abbrev_month_and_year] = "%b %Y"
...
end
然后我根據我想要顯示的方式使用Time.now.to_s(:app_date)等。 你可以添加Time::DATE_FORMATS[:default] = "%H:%M"
來完成你想要做的事情。 這不是國際化的 - 為此,coreyward的答案可能更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.