簡體   English   中英

更改默認的Ruby時間格式

[英]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具有用於格式化DateTime實例的內置預設。 這是他們在我的機器上的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM