Time Date时间转换和格式化输出

1.格式化输出

那么最常用到的应该是:
Ruby代码
  1. DateTime.parse(Time.now.to_s).strftime('%Y-%m-%d %H:%M:%S').to_s#就是按照2009-5-14 8:42:13的给定格式输出
DateTime.parse(Time.now.to_s).strftime('%Y-%m-%d %H:%M:%S').to_s#就是按照2009-5-14 8:42:13的给定格式输出

这个比较容易也经常用到。

2. 反向格式化

就是,从表单提交了一定格式的字符串,想把它格式化成一个日期类型的变量。
Ruby代码
  1. DateTime.parse(params['start_date']).strftime('%Y-%m-%d %H:%M:%S').to_s
DateTime.parse(params['start_date']).strftime('%Y-%m-%d %H:%M:%S').to_s

这里需要说明DataTime.parse比较强,其他格式也能猜出来,但我处理带时区的时候,总出问题。相当于
Ruby代码
  1. DateTime.parse(params['start_date']).strftime('%F %T').to_s
DateTime.parse(params['start_date']).strftime('%F %T').to_s


3. 集成多种方式输出

Ruby代码
  1. # config/initializers/date_time_formats.rb
  2. Time::DATE_FORMATS.merge!(
  3. :full => '%B %d, %Y at %I:%M %p',
  4. :md => '%m/%d',
  5. :mdy => '%m/%d/%y',
  6. :time => '%I:%M %p'
  7. )
# 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'
)


这时,你就可以简单的通过调用
Ruby代码
  1. Time.now.to_s(:full)#按照之前定义"May 14, 2009 at 08:39 AM"
Time.now.to_s(:full)#按照之前定义"May 14, 2009 at 08:39 AM"


4. 满足变化需求的输出

比如,要求是当前年份,不显示年,其他的年才显示

Ruby代码
  1. Time::DATE_FORMATS.merge!(
  2. :friendly => lambda { |time|
  3. if time.year == Time.now.year
  4. time.strftime "%b #{time.day.ordinalize}"
  5. else
  6. time.strftime "%b #{time.day.ordinalize}, %Y"
  7. end
  8. }
  9. )
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
  }
)

Ruby代码
  1. >> Time.now.to_s(:friendly)
  2. => "May 14th"
  3. >> (Time.now-2.years).to_s(:friendly)
  4. => "May 14th, 2007"
>> Time.now.to_s(:friendly)
=> "May 14th"
>> (Time.now-2.years).to_s(:friendly)
=> "May 14th, 2007"



                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值