0

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

我尝试从 DateTime 字段中获取字符串:

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

返回的字符串对我不利。在 ActiveRecord 我可以做这样的事情:

Error.first.submitted_at.to_s(:only_date)

或任何其他日期格式化程序。DataMapper 中是否有类似的东西,或者我必须使用 strftime 方法?

4

1 回答 1

1

这是使用 AcitveSupport 提供的功能。你可以做得到require 'activesupport'它。不过,这可能有点矫枉过正。你也可以使用#stampfrom 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"    
于 2009-08-24T12:54:49.820 回答