Saya suka jawaban Bartosz, tapi hei, karena ini Rails yang sedang kita bicarakan, mari kita selangkah lebih maju dengan licik. (Sunting: Meskipun saya hanya akan monkeypatch metode berikut, ternyata ada cara yang lebih bersih.)
DateTime
instance memiliki to_formatted_s
metode yang disediakan oleh ActiveSupport, yang menggunakan simbol tunggal sebagai parameter dan, jika simbol itu dikenali sebagai format standar yang valid, mengembalikan sebuah String dengan pemformatan yang sesuai.
Simbol-simbol tersebut didefinisikan oleh Time::DATE_FORMATS
, yang merupakan hash simbol untuk string baik untuk fungsi format standar ... atau procs. 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
Tapi hei, jika Anda tidak bisa menolak kesempatan untuk melakukan monkeypatch, Anda selalu bisa memberikan antarmuka yang lebih bersih:
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