论坛首页 编程语言技术论坛

时间转换和格式化输出

浏览 1828 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (5) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-12-09   最后修改:2009-12-09

很多情况下,我们会对时间进行特定格式输出。


在此,举两个例子。

 

一、集成多种方式输出

在config/initializers/date_time_formats.rb中输入如下代码:

Time::DATE_FORMATS.merge!(
  :full => '%B %d, %Y at %I:%M %p',
  :md => '%m/%d',
  :mdy => '%m/%d/%y',
  :time => '%I:%M %p'
)

 

我们可以这样去用它:

 

Time.now.to_s(:full)  => #December 09, 2009 at 01:22 PM
Time.now.to_s(:md)  => #12/09
Time.now.to_s(:mdy)  => #12/09/09
Time.now.to_s(:time)  => #01:22 PM

 

二、满足变化需求的输出

如果是当前年份,不显示年,其他情况则显示年。

 

Time::DATE_FORMATS.merge!(
  :friendly => lambda { |time|
    if time.year == Time.now.year
      time.strftime "%b #{time.day.ordinalize}"
    else
      time.strftime "%b #{time.day.ordinalize}, %Y"
    end
  }
)

 

我们可以这样去用它:

 

Time.now.to_s(:friendly)  => #Dec 9th
(Time.now - 2.years).to_s(:friendly)  => #Dec 9th, 2007

 

论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics