独自の日付フォーマットを設定する方法(nilだとまずい)

Railscasts - Formatting Time
より
environment.rb

Time::DATE_FORMATS[:hoge] = "hoge on %B %d at %I:%M %p"

viewでこう書ける。

<%= task.hoge_at.to_s(:hoge) %>

こんな感じ

ruby script/console

>> t = Time.now
=> Tue Feb 23 19:28:30 0900 2010
>> t.to_s(:hoge)
=> "hoge on February 23 at 07:28 PM"
>> 
?> t.to_s
=> "Tue Feb 23 19:28:30 +0900 2010"
>> t.to_s(:short)
=> "23 Feb 19:28"
>> t.to_s(:db)
=> "2010-02-23 19:28:30"
>> t.to_s(:time)
=> "19:28"
>> t.to_s(:long)
=> "February 23, 2010 19:28"
>> t.to_s(:rfc822)
=> "Tue, 23 Feb 2010 19:28:30 +0900"

補足

refe Time#strftime

* %A: 曜日の名称(Sunday, Monday ... )
* %a: 曜日の省略名(Sun, Mon ... )
* %B: 月の名称(January, February ... )
* %b: 月の省略名(Jan, Feb ... )
* %c: 日付と時刻
* %d: 日(01-31)
* %H: 24時間制の時(00-23)
* %I: 12時間制の時(01-12)
* %j: 年中の通算日(001-366)
* %M: 分(00-59)
* %m: 月を表す数字(01-12)
* %p: 午前または午後(AM,PM)
* %S: 秒(00-60) (60はうるう秒)
* %U: 週を表す数。最初の日曜日が第1週の始まり(00-53)
* %W: 週を表す数。最初の月曜日が第1週の始まり(00-53)
* %w: 曜日を表す数。日曜日が0(0-6)
* %X: 時刻
* %x: 日付
* %Y: 西暦を表す数
* %y: 西暦の下2桁(00-99)
* %Z: タイムゾーン trap [trap::Time]
* %%: %自身

問題

よりシンプルに日付と時刻の表示書式を整えるには... - ザリガニが見ていた...。
nilだとまずかった。

?> t = nil
=> nil
>> t.to_s(:hoge)
ArgumentError: wrong number of arguments (1 for 0)
        from (irb):5:in `to_s'
        from (irb):5

結局

ヘルパメソッド使うか。