2010-09-07 17 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