2009-08-24 8 views
0

Ich schreibe mein erstes Projekt mit Datamapper als ORM, also bitte etwas Geduld. :)Datamapper DateTime to String Verhalten

Ich versuche String von Datetime-Feld zu tun bekommen:

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

Returned String ist nicht gut für mich. In Active kann ich so etwas tun:

Error.first.submitted_at.to_s (: only_date)

oder irgendein anderes Datum Formatierer. Ist etwas ähnliches in DataMapper verfügbar oder muss ich die strftime-Methode verwenden?

Antwort

1

Dies ist eine Funktion, die mit AcitveSupport verfügbar ist. Sie können require 'activesupport' tun, um es zu bekommen. Das könnte aber zu viel werden. Sie könnten auch #stamp von Facets verwenden, um die gleiche Sache zu tun, aber Sie müssen das :only_date Format ein:

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" 

Wenn Sie es wirklich mit dem to_s Methode verwenden möchten, können Sie das auch tun:

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

Nun, ich habe die Hoffnung, dass DataMapper es irgendwie unterstützt. Ich werde die DateTime-Klasse mit meiner Implementierung to_s erweitern. Vielen Dank. – Sebastian