3

我不太熟悉Rails中的I18N,所以請耐心等待。試圖設置自定義日期&時間格式:在en.yml中沒有采用自定義日期和時間格式的Rails

#config/locales/en.yml 
en: 
    date: 
    formats: 
     long_dateweek: "%A, %B %d, %Y" 
    time: 
    formats: 
     very_short: "%H:%M" 

但是當我嘗試使用他們,我剛剛得到的默認格式:

1.9.3p194 :001 > Time.now.to_date.to_s(:long_dateweek) 
=> "2012-08-22" 
1.9.3p194 :002 > Time.now.to_time.to_s(:very_short) 
=> "2012-08-22 16:12:47 -0700" 

試圖重新啓動控制檯(甚至是服務器)無濟於事... 我錯過了什麼?

回答

2

您需要使用I18n.l方法如下:

1.9.3p194 :001 > I18n.l Time.now.to_date, :format => :long_dateweek 
=> "Wednesday, August 22, 2012" 
1.9.3p194 :002 > I18n.l Time.now, :format => :very_short 
=> "23:03" 

您還可以使用l輔助方法,在你的看法。看看這個rails guide欲知更多信息。

+1

非常好,謝謝!稍微比我預期的「繁瑣」...但很簡單... – Meltemi

+0

進一步檢查後,您提供的方法,'I18n.l'似乎以UTC格式返回時間而不是本地* PDT *該應用程序已配置。任何想法如何獲得在本地區域的響應?嘗試'I18n.l Time.now.to_time(:本地),:格式=>:very_short',除其他外,無濟於事...... – Meltemi

+0

它看起來像我使用'Time.now'使用本地時區運行應用程序的服務器。如果您想使用您在配置文件中設置的時區,則需要使用'Time.zone.now'。 – alexsanford1

3

@ alexsanford1有正確的答案。我在下面修改了我的視圖。

<%= l Time.now, :format => :very_short %> 
+0

讓我'ArgumentError:錯誤的參數數量(1爲0)'。並且'Time.now.to_time.to_s(:format =>:very_short)'讓我獲得和以前一樣的默認格式:''2012-08-22 18:49:22 -0700「' – Meltemi

相關問題