我使用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方法?
答案 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"