Tôi thích câu trả lời của Bartosz, nhưng này, vì đây là Rails mà chúng ta đang nói đến, chúng ta hãy tiến lên một bước trong tà đạo. (Chỉnh sửa: Mặc dù tôi sẽ chỉ sử dụng phương pháp sau đây, nhưng hóa ra có một cách sạch hơn.)
DateTime
các phiên bản có một to_formatted_s
phương thức được cung cấp bởi ActiveSupport, lấy một ký hiệu làm tham số và, nếu biểu tượng đó được nhận dạng là định dạng được xác định trước hợp lệ, sẽ trả về một Chuỗi có định dạng phù hợp.
Các ký hiệu đó được xác định bởi Time::DATE_FORMATS
, đó là hàm băm của các ký hiệu cho một chuỗi cho hàm định dạng chuẩn ... hoặc 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
Nhưng này, nếu bạn không thể cưỡng lại cơ hội để bắt khỉ, bạn luôn có thể cung cấp cho giao diện sạch hơn:
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