created_at 格式化 rails

<%= @account.created_at.to_s(:db) %>

 使用to_s(:db) 时间会出现日期加上时间,否则就会出现原始的UTC

 

Rails 时间 to_s 方法

在一个 Rails 项目中,会有很多地方会显示时间,我们希望采用一致的方式输出。

除了 strftime 方法,Rails 也可以直接呼叫 to_s 来转换输出格式,例如

datetime = Time.now

datetime.to_s(:db)            # => "2007-12-04 00:00:00"
datetime.to_s(:number)        # => "20071204000000"
datetime.to_s(:short)         # => "04 Dec 00:00"
datetime.to_s(:long)          # => "December 04, 2007 00:00"
datetime.to_s(:long_ordinal)  # => "December 4th, 2007 00:00"
datetime.to_s(:rfc822)        # => "Tue, 04 Dec 2007 00:00:00 +0000"
datetime.to_s(:iso8601)       # => "2007-12-04T00:00:00+00:00"

另外,也可以自行配置项目常用的格式。例如,请编辑 config/application.rb,在最后新增一行:

 Time::DATE_FORMATS.merge!(:default => '%Y/%m/%d %I:%M %p', :ymd => '%Y/%m/%d')

这样就会

  1. 修改默认的时间显示格式
  2. 注册一个新的格式是 ymd 只有日期

重启 rails s 服务器。

修改 app/views/events/index.html.erb

app/views/events/index.html.erb
-  <%= event.created_at.strftime("%Y/%m/%d %I:%M %p") %>
+  <%= event.created_at.to_s %> 

就会得到一样的结果 2017/04/10 05:53 PM 了。

如果只想显示日期,可以改成 <%= event.created_at.to_s(:ymd) %>

strftime 格式化时间

在修改默认时区后,Rails 默认的时间显示格式例如 2017-04-10 17:53:55 +0800 包含了时区资讯,通常我们不会显示给用户,那要如何修改时间的显示方式呢?

Ruby 内建了 strftime 这个方法来格式化输出,请修改 app/views/events/index.html.erb

app/views/events/index.html.erb
-  <%= event.created_at %>
+  <%= event.created_at.strftime("%Y/%m/%d %I:%M %p") %>

这样就会输出成例如 2017/04/10 05:53 PM
这个 strftime 方法接受了一个字符串参数是格式。详细这个格式代表什么意义,请参考 strftime 文档上的说明,例如 %m 就代表月份(会补零),而 %M 代表分钟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值