在ruby中转换日期格式需要一些帮助

Moh*_*ain 3 ruby formatting ruby-on-rails date strftime

以下是一些输出:

Date.today  => Mon, 25 Jun 2012 
Date.today.to_formatted_s(:long_ordinal)  => "June 25th, 2012" 
Date.today.strftime('%A %d, %B')  =>  "Monday 25, June" 
Run Code Online (Sandbox Code Playgroud)

现在我需要输出格式,即:

  Monday 25th, June      or       Thrusday, 1st, October
Run Code Online (Sandbox Code Playgroud)

问题是to_formatted_sstrftime仅适用于日期和两者或它们返回字符串.如何以我需要的方式获得输出.

Cas*_*per 9

您可以使用Date::DATE_FORMATS添加新的自定义格式,并Integer.ordinalize获得日期序数:

Date::DATE_FORMATS[:month_ordinal] = lambda { |date| 
  date.strftime("%A #{date.day.ordinalize}, %B") 
}

>> Date.today.to_formatted_s(:month_ordinal)
=> "Monday 25th, June"
Run Code Online (Sandbox Code Playgroud)