免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4971 | 回复: 1
打印 上一主题 下一主题

rails time format [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-09-08 17:23 |只看该作者 |倒序浏览
rails time format




背景知识:Time&TimeWithZone是两个时间的类,在数据库中可以是年月日时分秒毫秒~在页面输出的时候,有时候不需要这些精确的信息,更多的时候我们需要定制化的时间输出格式,这样就用到了rails扩展的功能


1.to_s

active_support中有对于这两个类的扩展,分别重写了很多的方法,to_s这个方法就不再是简简单单的转化为string输出的功能了,它接受一个symbol作为参数,来确定需要显示成什么样子的时间,来看源代码:

Ruby代码

  1.   class Time

  2.   DATE_FORMATS = {
  3.     :db           => "%Y-%m-%d %H:%M:%S",
  4.     :number       => "%Y%m%d%H%M%S",
  5.     :time         => "%H:%M",
  6.     :short        => "%d %b %H:%M",
  7.     :long         => "%B %d, %Y %H:%M",
  8.     :long_ordinal => lambda { |time| time.strftime("%B #{ActiveSupport::Inflector.ordinalize(time.day)}, %Y %H:%M") },
  9.     :rfc822       => lambda { |time| time.strftime("%a, %d %b %Y %H:%M:%S #{time.formatted_offset(false)}") }
  10.   }
  11.   
  12.   end
复制代码
在DATE_FORMATS 中定义了7种输出的格式,因此能够满足一般的应用,使用的时候,只需要在to_s后加上需要的时间格式:

Ruby代码

  1.   #   time.to_s(:time)                    # => "06:10:17"
  2.   #   to_formatted_s为to_s的别名,意义一样~
  3.   #
  4.   #   time.to_formatted_s(:db)            # => "2007-01-18 06:10:17"
  5.   #   time.to_formatted_s(:number)        # => "20070118061017"
  6.   #   time.to_formatted_s(:short)         # => "18 Jan 06:10"
  7.   #   time.to_formatted_s(:long)          # => "January 18, 2007 06:10"
  8.   #   time.to_formatted_s(:long_ordinal)  # => "January 18th, 2007 06:10"
  9.   #   time.to_formatted_s(:rfc822)        # => "Thu, 18 Jan 2007 06:10:17 -0600"
复制代码
但是有时候这些需求并不能够满足我们,方法很简单,只要我们增加DATE_FORMATS 这个hash中的配置信息,就能够来定制我们需要的结果。在config/enviromeng.rb文件中,加入下面的代码,

Ruby代码

  1. Time::DATE_FORMATS.merge!(
  2.   :date => '%Y-%m-%d'
  3.   )
  4. #rails2.x可能需要改成下面的代码
  5. ActiveSupport::CoreExtensions::Time::Conversion::DATE_FORMATS.merge!(
  6.     :date => '%Y%m%d'
  7.   )
复制代码
需要重启服务,然后再页面中就能够使用我们自己定制的格式了,

Ruby代码
  1. <%= user.created_at.to_formatted_s(:date) %>
复制代码

论坛徽章:
0
2 [报告]
发表于 2011-09-09 07:42 |只看该作者
好好好!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP