2009-08-24 17 views
0

我寫我的第一個項目至極使用Datamapper作爲ORM,所以請耐心等待。 :)Datamapper日期時間到字符串行爲

我嘗試做從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方法?

回答

1

這是使用AcitveSupport提供的功能。你可以做require 'activesupport'得到它。儘管如此,這可能是矯枉過正的。你也可以使用#stampFacets做同樣的事情,但你必須建立: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"  
+0

嗯,我希望DataMapper以某種方式支持它。我將用我的實現to_s擴展DateTime類。謝謝。 – Sebastian 2009-08-25 09:04:05