Datamapper DateTime to String行为

时间:2009-08-24 10:21:35

标签: ruby string datetime datamapper

我使用Datamapper作为ORM编写我的第一个项目,所以请耐心等待。 :)

我尝试从DateTime字段中获取String:

  

Error.first.submitted_at.to_s   => “2009-08-24T12:13:32 + 02:00”

返回的字符串对我不好。在ActiveRecord中我可以做类似的事情:

  

Error.first.submitted_at.to_s(:only_date)

或任何其他日期格式化程序。在DataMapper中是否可以使用somethig,或者我必须使用strftime方法?

1 个答案:

答案 0 :(得分:1)

这是使用AcitveSupport的功能。您可以require 'activesupport'来获取它。但这可能有点矫枉过正了。您也可以使用#stamp中的Facets执行相同的操作,但您必须设置:only_date格式:

require 'facets/date'

Date::FORMAT[:only_date] = '%d.%m.%y'  # For Date objects
Time::FORMAT[:only_date] = '%d.%m.%y'  # For DateTime objects

d = DateTime.now
d.stamp(:only_date)  # => "24.08.09"

如果你真的想在to_s方法中使用它,你也可以这样做:

require 'facets/date'

Date::FORMAT[:only_date] = '%d.%m.%y'  # For Date objects
Time::FORMAT[:only_date] = '%d.%m.%y'  # For DateTime objects

class DateTime
  alias :default_to_s :to_s
  def to_s(format=nil)
    if format.nil?
      default_to_s
    else
      stamp format
    end
  end
end

d = DateTime.now
d.to_s(:only_date)  # => "24.08.09"