1.格式化输出
那么最常用到的应该是:
这个比较容易也经常用到。
2. 反向格式化
就是,从表单提交了一定格式的字符串,想把它格式化成一个日期类型的变量。
这里需要说明DataTime.parse比较强,其他格式也能猜出来,但我处理带时区的时候,总出问题。相当于
3. 集成多种方式输出
这时,你就可以简单的通过调用
4. 满足变化需求的输出
比如,要求是当前年份,不显示年,其他的年才显示
那么最常用到的应该是:
- 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. 反向格式化
就是,从表单提交了一定格式的字符串,想把它格式化成一个日期类型的变量。
- 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比较强,其他格式也能猜出来,但我处理带时区的时候,总出问题。相当于
- DateTime.parse(params['start_date']).strftime('%F %T').to_s
DateTime.parse(params['start_date']).strftime('%F %T').to_s
3. 集成多种方式输出
- # 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'
- )
# 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)#按照之前定义"May 14, 2009 at 08:39 AM"
Time.now.to_s(:full)#按照之前定义"May 14, 2009 at 08:39 AM"
4. 满足变化需求的输出
比如,要求是当前年份,不显示年,其他的年才显示
- 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::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)
- => "May 14th"
- >> (Time.now-2.years).to_s(:friendly)
- => "May 14th, 2007"
>> Time.now.to_s(:friendly)
=> "May 14th"
>> (Time.now-2.years).to_s(:friendly)
=> "May 14th, 2007"