`
zarknight
  • 浏览: 146458 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Ruby中处理时间和日期

阅读更多
我们可以使用Time类来生成一个当前时间的对象:
t = Time.new

t = Time.now

Time类有类方法mktime(同义方法是local方法)来根据传入的参数生成时间对象,并且它使用的是当前的时区:
t1 = Time.mktime(2001)                # January 1, 2001 at 0:00:00
t2 = Time.mktime(2001,3)
t3 = Time.mktime(2001,3,15)
t4 = Time.mktime(2001,3,15,21)
t5 = Time.mktime(2001,3,15,21,30)
t6 = Time.mktime(2001,3,15,21,30,15)  # March 15, 2001 9:30:15 pm


Time.gm(同义方法是Time.utc)方法基本上和上面的mktime用法相同,但它使用的是GMT或UTC时区
t8 = Time.gm(2001,3,15,21,30,15)    
t9 = Time.utc(2001,3,15,21,30,15)

生成的时间对象有一个to_a方法,可以把时间相关一信息转化成一个数组,数组中存放的信息格式如下:
 seconds,
 minutes,
 hours,
 day,
 month,
 year,
 day of week (0..6),
 day of year (1..366),
 daylight saving (true or false),
 and time zone (as a string)
 
 因此,我们也可以这么用:
 t0 = Time.local(0,15,3,20,11,1979,2,324,false,"GMT-8:00")
 t1 = Time.gm(*Time.now.to_a)
 
 使用秒数来创建日期:
====================================================
在内部,日期存储为一个整数,代表从1970年开始到当前的秒数,我们可以获取这么秒数或则利用这个秒数来创建日期:
epoch  = Time.at(0)          # Find the epoch (1 Jan 1970 GMT)
newmil = Time.at(978307200)  # Happy New Millennium! (1 Jan 2001)

now = Time.now              # 16 Nov 2000 17:24:28
sec = now.to_i              # 974424268

 
 日期的格式化
 ====================================================
 获取本日是星期几:
 now = Time.now + 1
 day_num  = now.wday            #3
 day_abbr = now.strftime("%a")    #Wed
 day_full = now.strftime("%A")    #Wednesday

 获取一年中本日所在的周:
 t1 = Time.local(2002,5,1)
 1 = Date.new(2002,5,1)

 week1a = t1.strftime("%U").to_i   # 17
 week1b = t1.strftime("%W").to_i   # 17
 week1c = d1.cweek                 # 18
 
 获取当前时区:
 z1 = Time.gm(2000,11,10,22,5,0).zone     # "UTC"
 z2 = Time.local(2000,11,10,22,5,0).zone  # "中国标准时间"
 
 
 格式化时间
 ====================================================
 t = Time.now
 puts t.strftime("%H:%M:%S")      # 22:07:45

 puts t.strftime("%H:%M")         # 22:07
 puts (t + 30).strftime("%H:%M")  # 22:08 (加了30秒)

 puts t.strftime("%I:%M %p")      # 10:07 PM
 
 
 
 所有strftime方法中可用的格式化符号:
 =====================================================
 %a    星期的缩写,如Wed
 %A    星期的全称,如Wednesday
 %U    本星期在全年中所属的周数
 %W    
 %H    小时(24小时制)
 %M    分钟
 %S    秒
 %I    小时(12小时制)
 %p    PM 或 AM
 
 %b    月份的缩写,如 Jan
 %B    月份的全称,如 January
 %c    本地日期和时间,如 06/14/07 16:43:49
 %d    日期 (1..31)
 %j    本日在一年中所属的天 (1..366)
 %m    月份 (1..12)
 %w    星期的数字形式 (0..6)
 %x    本地日期,如 06/14/07
 %Y    本地时间,如 16:43:49
 %y    2位的年份表示,如07
 %Y    4位的年份表示,如2007
 %Z    时区名,如"中国标准时间"
 %%    字面符号%


 

分享到:
评论
1 楼 sinkzephyr 2009-01-17  
引用
%Y    本地时间,如 16:43:49

本地时间应该是%X

相关推荐

Global site tag (gtag.js) - Google Analytics