如何将ActiveSupport :: TimeWithZone实例格式化为指定的格式

时间:2014-12-22 06:13:02

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个像2014-12-22 05:54:34 UTC这样的ActiveSupport :: TimeWithZone实例,但我只想保留日期信息2014-12-22

我试过铁的to_formatted_s,但它对我不起作用。

<%= item.updated_at.to_formatted_s(:db) %>

显示:2014-12-22 05:54:34

3 个答案:

答案 0 :(得分:5)

您可以使用strftime

> date_time.strftime('%Y-%m-%d')

其中,

%Y - Year with century
%m - Month of the year (01..12)
%d - Day of the month (01-31)

答案 1 :(得分:1)

[7] pry(main)> Time.zone.now.is_a?(ActiveSupport::TimeWithZone)
=> true
[8] pry(main)> Time.zone.now.to_s
=> "2014-12-22 17:16:39 +1100"
[9] pry(main)> Time.zone.now.strftime("%Y-%m-%d")
=> "2014-12-22"
[11] pry(main)> Time.zone.now.strftime("%F")
=> "2014-12-22"

参见
http://www.ruby-doc.org/core-2.1.5/Time.html#method-i-strftime

答案 2 :(得分:0)

方法如下:

Time.current.strftime("%d %b %Y")
=> "11 Jan 2021"

Here 是完整列表:

%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)

%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 firstday 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

还有another source