Bartosz'un cevabını seviyorum, ama hey, bahsettiğimiz Rails olduğundan, haksız bir adım atalım. (Düzenleme: Ben sadece aşağıdaki yöntemi monkeypatch olacaktı, ancak daha temiz bir yolu olduğu ortaya çıkıyor.)
DateTime
örneklerde, to_formatted_s
ActiveSupport tarafından sağlanan ve parametre olarak tek bir sembol alan bir yöntem vardır ve bu sembol önceden tanımlanmış geçerli bir biçim olarak tanınırsa, uygun biçimlendirmeye sahip bir Dize döndürür.
Bu semboller Time::DATE_FORMATS
, standart biçimlendirme işlevi ... veya procs için dizelerin sembollerinin bir karması olan ile tanımlanır . Bwahaha.
d = DateTime.now #Examples were executed on October 3rd 2008
Time::DATE_FORMATS[:weekday_month_ordinal] =
lambda { |time| time.strftime("%a %b #{time.day.ordinalize}") }
d.to_formatted_s :weekday_month_ordinal #Fri Oct 3rd
Ama hey, maymunbalığı fırsatına karşı koyamazsan, her zaman daha temiz bir arayüz verebilirsin:
class DateTime
Time::DATE_FORMATS[:weekday_month_ordinal] =
lambda { |time| time.strftime("%a %b #{time.day.ordinalize}") }
def to_my_special_s
to_formatted_s :weekday_month_ordinal
end
end
DateTime.now.to_my_special_s #Fri Oct 3rd