2010-09-07 67 views
24

我發現自己重複鍵入我定義的許多strftime。在哪裏把時間格式規則在Rails 3中?

看了Ryan Bates的railscasts ep 32/33(我覺得),我在Time.now.to_s中爲to_s方法創建了一個自定義選項,以便我可以執行Time.now.to_s(:sw),其中:sw是我的自定義方法,例如,檢索「2010年9月23日,5:00 PM」。

但問題是,我不知道在哪裏放置#SW的定義。它應該在初始化文件夾中的文件中嗎?或者它應該在application.rb中?

謝謝!

+0

順便說一句http://strftime.net/有很多幫助 – Dorian 2017-12-30 08:58:48

回答

22

我有一個文件config/initialisers/time_formats.rb包含:

... 
Time::DATE_FORMATS[:posts] = "%B %d, %Y" 
Time::DATE_FORMATS[:published] = "%B %Y" 
... 

你只需要重新啓動服務器,以使更改回升。

+0

好吧,我也這麼認爲。也因爲這樣,你可以在文件中組織這些'助手',而不是在application.rb中排成行。 – 2010-09-07 00:27:21

5

使用Rails I18n API。

# config/locales/en.yml 
en: 
    date: 
    formats: 
     default: "%Y-%m-%d" 
     short: "%b %d" 
     long: "%B %d, %Y" 

# in views 
= l post.updated_at # will use default format of date in locales yml file 

看到I18n API

45

使用「時間」,而不是在你的區域設置「日期」文件,因爲Rails的時間戳是日期時間。

配置/區域設置/ en.yml在應用程序/視圖/職位/ show.html.haml

en: 
    time: 
    formats: 
     default: "%Y/%m/%d" 
     short: "%b %d" 
     long: "%B %d, %Y" 

= l post.updated_at 
    = l post.created_at, :format => :long 
+5

另請參閱http://strftimer.com/獲取幫助建立時間格式。 – tee 2013-02-27 00:00:38

0

請閱讀這篇文章:

Rails - to_formatted_s

與名稱創建文件:配置/初始化/ time_formats.rb

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

你也可以使用:

formated_date = my_date.to_formatted_s(:my_custom_time_format) 

注意:必須重新啓動服務器導軌(使用WEBrick,FCGI等)

+0

啊,我正在拉我的頭髮,試圖找出爲什麼我的格式沒有改變。感謝您的服務器重新啓動提示! – AndrewJM 2014-06-05 20:42:37