2012-04-27 26 views
2

我正在使用Ruby on Rails v3.2.2,我想顯示一個類似<day_number> <month_name> <year_number>的數據。也就是說,我有一個datetime數據庫表列,並且我想將其包含的值更改爲例如2012-04-27 00:00:0027 april 2012如何處理`datetime`值以便將它從「2012-04-27 00:00:00」更改爲「2012年4月27日」?

我該如何做到這一點?

+0

犯錯,你爲什麼不只是把它保存爲一個'date'而不是'datetime'? – 2012-04-27 15:19:35

+0

@安德魯馬歇爾 - 這是因爲我想盡可能精確。 ;-) – Backo 2012-04-27 15:22:33

回答

5

標準方式是使用導軌本地化。

模型

I18n.l(datetime, :format => :short) 

控制器

I18n.l(datetime, :format => :long) 

視圖

<%= l(datetime), :format => :custom %> 

配置/語言環境/ en.yml

en: 
    time: 
    formats: 
     long: "%A %B %d %Y | %I:%M %p GMT" 
     short: "%d %B %Y, %H:%M GMT" 
     custom: "your custom format" 
    date: 
    formats: 
     short: "%d %B %Y" 
     long: "%A %B %d %Y" 
     custom: "your custom format" 

在你的情況下,格式應該是「%d%A%Y」。

好處是,如果你想改變格式,你可以在一個地方爲你正在使用的所有日期時間做到這一點。

+0

從技術上講,如何「命名」所有這些'%A%B%d%Y ...',以及在哪裏可以找到一些關於如何選擇我需要的最佳格式的文檔? – Backo 2012-04-27 13:34:39

+0

試試這個http://snippets.dzone.com/posts/show/2255或http://apidock.com/ruby/DateTime/strftime或嘗試谷歌與關鍵字[strftime紅寶石] :) – Suborx 2012-04-27 13:38:13

1

您可以使用該方法

str_name.strftime("%d %A %Y") 
相關問題