Мені подобається відповідь Бартоша, але ей, оскільки ми говоримо про це Рейки, давайте зробимо це на крок уперед. (Редагувати. Хоча я збирався просто провести наступний метод, але виявляється, що існує більш чистий спосіб.)
DateTime
екземпляри мають to_formatted_s
метод, наданий ActiveSupport, який приймає один символ як параметр і, якщо цей символ розпізнається як допустимий заздалегідь визначений формат, повертає String з відповідним форматуванням.
Ці символи визначаються символом Time::DATE_FORMATS
, який є хеш символів або для рядків для стандартної функції форматування ..., або для проектів. 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
Але ей, якщо ви не можете протистояти можливості маніпулювання, ви завжди можете дати цьому чистіший інтерфейс:
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