最近心情稍微好一点,正好现在难得的清闲,于是看了一下ruby的时间处理,说实话,一直觉得java的日期时间设计得很一般,最开始搞个Date,后来又弄个Calendar与DateFormat来弥补其不足,用起来也是比较麻烦的。不过ruby在此方面的确要做得好些,写起来非常的简洁,下面把刚看的成果记下来:
输出为:
[quote]
"2010-06-04 10:23:20"
2010年6月4日 10时23分20秒
"2010-05-02 13:31:02"
2010-06-02 12:33:32 +0800
[/quote]
关于日期的显示格式有很多种:
[quote]
%A 周日期全称 Saturday
%a 周日期缩写
%B 表示年的月份 December
%b 表示年的月份的缩写 dec
%C 世纪数 20
%c 打印时间的方式 等价于 %a%b%e%H:%M:%S %Y'
%D 如上 等价于 %m%d%y
%d 月份的各天 补零 31
%e 月份的各天 不补零 31
%F 打印的方式 等价于 2005-12-31
%G 带世纪数的财政年数 2010
%g 不带世纪数的财政年数 10
%H 日期的小时数 24小时制 14
%h 与%b相同
%I 日期的小时数 12小时制 8
%M 小时的分钟数 22
%m 年的月份
%n 换行符
%P 小写正午指示器 pm
%p 大写正午指示器 PM
%R 时间 等级与%H:%M
%r 时间 等价于%I:%M:%S %p
%S 分钟的秒数 33
%s Unix纪元的秒数 11111111111111
%T 时间 等价于%H:%M:%S
%t 制表符
%U 年的历法周数 41
%u 商用周日期 6
%V 商用周数
%W =%V
%w 周的日历 5
%X 时间 等价于 %H:%M:%S
%Y 带世纪的年份 2005
%y 不带世纪的年份 05
%Z 时区缩写(Time)或偏移(Date) GMT对Time为“GMT”,对“Date”为Z
%z 作为gmt 偏移时区“+0000”
%% 文字百分号 %
%v 时间 等价于 %e-%b-%Y
%+ 时间 等价于 %a %b %e %H:%M:%S %Z %Y
[/quote]
require "time"
#格式化时间
t = Time.now
format="%Y-%m-%d %H:%M:%S"
t1 = Time.local(2010,5,2,13,31,2)
#显示
p t.strftime(format)
print "#{t.year}年#{t.month}月#{t.day}日 #{t.hour}时#{t.min}分#{t.sec}秒 \n"
p t1.strftime(format)
#解析时间
s="2010-06-02 12:33:32"
t2 = Time.parse(s)
p t2
输出为:
[quote]
"2010-06-04 10:23:20"
2010年6月4日 10时23分20秒
"2010-05-02 13:31:02"
2010-06-02 12:33:32 +0800
[/quote]
关于日期的显示格式有很多种:
[quote]
%A 周日期全称 Saturday
%a 周日期缩写
%B 表示年的月份 December
%b 表示年的月份的缩写 dec
%C 世纪数 20
%c 打印时间的方式 等价于 %a%b%e%H:%M:%S %Y'
%D 如上 等价于 %m%d%y
%d 月份的各天 补零 31
%e 月份的各天 不补零 31
%F 打印的方式 等价于 2005-12-31
%G 带世纪数的财政年数 2010
%g 不带世纪数的财政年数 10
%H 日期的小时数 24小时制 14
%h 与%b相同
%I 日期的小时数 12小时制 8
%M 小时的分钟数 22
%m 年的月份
%n 换行符
%P 小写正午指示器 pm
%p 大写正午指示器 PM
%R 时间 等级与%H:%M
%r 时间 等价于%I:%M:%S %p
%S 分钟的秒数 33
%s Unix纪元的秒数 11111111111111
%T 时间 等价于%H:%M:%S
%t 制表符
%U 年的历法周数 41
%u 商用周日期 6
%V 商用周数
%W =%V
%w 周的日历 5
%X 时间 等价于 %H:%M:%S
%Y 带世纪的年份 2005
%y 不带世纪的年份 05
%Z 时区缩写(Time)或偏移(Date) GMT对Time为“GMT”,对“Date”为Z
%z 作为gmt 偏移时区“+0000”
%% 文字百分号 %
%v 时间 等价于 %e-%b-%Y
%+ 时间 等价于 %a %b %e %H:%M:%S %Z %Y
[/quote]