to_formatted_s(:long_ordinal)在结束时返回00:00

时间:2012-11-30 01:13:55

标签: ruby-on-rails ruby activerecord

我正在使用ActiveSupport的to_formatted_s。

这样做的:

(User.first.birthday).to_formatted_s(:long_ordinal)

打印

 => "February 28th, 1992 00:00" 

为什么最后有00:00?这是正常的吗?什么是摆脱它的最佳方法? 感谢

2 个答案:

答案 0 :(得分:4)

:long_ordinal包括时间。

请参阅文件顶部附近的activesupport-3.2.8 / lib / active_support / core_ext / time / conversions.rb。

:long_ordinal => lambda { |time| 
  time.strftime("%B #{ActiveSupport::Inflector.ordinalize(time.day)}, %Y %H:%M") },

要摆脱它,请定义您自己的格式:

Time::DATE_FORMATS[:my_long_ordinal] = lambda { |time| 
      time.strftime("%B #{ActiveSupport::Inflector.ordinalize(time.day)}, %Y") }

我将这些内容放入config / initalizers / time_formats.rb中,如下所示:

Date::DATE_FORMATS[:month_year] = Time::DATE_FORMATS[:month_year] = "%B %Y"
Date::DATE_FORMATS[:mon_yr] = Time::DATE_FORMATS[:mon_yr] = "%b '%y"
Date::DATE_FORMATS[:yyyymmdd] = Time::DATE_FORMATS[:yyyymmdd] = "%Y-%m-%d"

让他们保持整洁有序。

答案 1 :(得分:1)

是的,这是正常的,这不仅仅是约会。

(User.first.birthday).to_date.to_formatted_s(:long_ordinal)