Đây là cách tôi trả lời câu hỏi này,
vì vậy trước tiên, bạn sẽ cần chuyển đổi dấu thời gian thành Ngày/Thời gian Ruby thực tế. Nếu bạn nhận được nó cũng giống như một chuỗi hoặc int từ facebook, bạn sẽ cần phải làm một cái gì đó như thế này:
my_date = Time.at(timestamp_from_facebook.to_i)
OK, vì vậy bây giờ giả sử bạn đã có đối tượng ngày của bạn ...
to_formatted_s là một hàm Ruby tiện dụng để biến ngày thành các chuỗi được định dạng.
Dưới đây là một số ví dụ về việc sử dụng của nó:
time = Time.now # => Thu Jan 18 06:10:17 CST 2007
time.to_formatted_s(:time) # => "06:10"
time.to_s(:time) # => "06:10"
time.to_formatted_s(:db) # => "2007-01-18 06:10:17"
time.to_formatted_s(:number) # => "20070118061017"
time.to_formatted_s(:short) # => "18 Jan 06:10"
time.to_formatted_s(:long) # => "January 18, 2007 06:10"
time.to_formatted_s(:long_ordinal) # => "January 18th, 2007 06:10"
time.to_formatted_s(:rfc822) # => "Thu, 18 Jan 2007 06:10:17 -0600"
Như bạn có thể thấy: : db,: số,: ngắn ... là định dạng ngày tùy chỉnh.
Để thêm định dạng tùy chỉnh của riêng bạn, bạn có thể tạo tập tin này: config/initializers/time_formats.rb và thêm các định dạng của riêng bạn có, ví dụ đây là một:
Date::DATE_FORMATS[:month_day_comma_year] = "%B %e, %Y" # January 28, 2015
đâu : month_day_comma_year là tên định dạng của bạn (bạn có thể thay đổi tên này thành bất kỳ thứ gì bạn muốn) và ở đâu là % B% e,% Y là định dạng ngày tháng.
Dưới đây là một cheatsheet nhanh chóng về cú pháp ngày unix, vì vậy bạn có thể nhanh chóng thiết lập định dạng tùy chỉnh của bạn:
From http://linux.die.net/man/3/strftime
%a - The abbreviated weekday name (``Sun'')
%A - The full weekday name (``Sunday'')
%b - The abbreviated month name (``Jan'')
%B - The full month name (``January'')
%c - The preferred local date and time representation
%d - Day of the month (01..31)
%e - Day of the month without leading 0 (1..31)
%g - Year in YY (00-99)
%H - Hour of the day, 24-hour clock (00..23)
%I - Hour of the day, 12-hour clock (01..12)
%j - Day of the year (001..366)
%m - Month of the year (01..12)
%M - Minute of the hour (00..59)
%p - Meridian indicator (``AM'' or ``PM'')
%S - Second of the minute (00..60)
%U - Week number of the current year,
starting with the first Sunday as the first
day of the first week (00..53)
%W - Week number of the current year,
starting with the first Monday as the first
day of the first week (00..53)
%w - Day of the week (Sunday is 0, 0..6)
%x - Preferred representation for the date alone, no time
%X - Preferred representation for the time alone, no date
%y - Year without a century (00..99)
%Y - Year with century
%Z - Time zone name
%% - Literal ``%'' character
t = Time.now
t.strftime("Printed on %m/%d/%Y") #=> "Printed on 04/09/2003"
t.strftime("at %I:%M%p") #=> "at 08:56AM"
Hy vọng điều này giúp bạn. Tôi cũng đã thực hiện một số github gist của hướng dẫn nhỏ này, trong trường hợp ai đó thích.
Tôi không biết cách sử dụng nó. Bạn có thể cho tôi một ví dụ nhỏ được không? – Alexandre
my_date_variable.strftime ("% m /% d /% Y") –
strftime không phải là DRY. Xin vui lòng không phân tán strftime tất cả các dự án của bạn. Ít nhất bạn đã đề cập đến một trình trợ giúp nhưng 'config/initializers/time_formats.rb' có nhiều thành ngữ hơn cho Rails. – PhilT