【转】ruby 时间日期处理

后端开发   发布日期:2025年07月05日   浏览次数:130

我们可以使用Time类来生成一个当前时间的对象:

  1. t = Time.new
  2. t = Time.now

 

Time类有类方法mktime(同义方法是local方法)来根据传入的参数生成时间对象,并且它使用的是当前的时区:

  1. t1 = Time.mktime(2001) # January 1, 2001 at 0:00:00
  2. t2 = Time.mktime(2001,3)
  3. t3 = Time.mktime(2001,3,15)
  4. t4 = Time.mktime(2001,3,15,21)
  5. t5 = Time.mktime(2001,3,15,21,30)
  6. t6 = Time.mktime(2001,3,15,21,30,15) # March 15, 2001 9:30:15 pm

 

Time.gm(同义方法是Time.utc)方法基本上和上面的mktime用法相同,但它使用的是GMT或UTC时区

  1. t8 = Time.gm(2001,3,15,21,30,15)
  2. t9 = Time.utc(2001,3,15,21,30,15)

 

生成的时间对象有一个to_a方法,可以把时间相关一信息转化成一个数组,数组中存放的信息格式如下:

  1. seconds,
  2. minutes,
  3. hours,
  4. day,
  5. month,
  6. year,
  7. day of week (0..6),
  8. day of year (1..366),
  9. daylight saving (true or false),
  10. and time zone (as a string)

 

因此,我们也可以这么用:

  1. t0 = Time.local(0,15,3,20,11,1979,2,324,false,"GMT-8:00")
  2. t1 = Time.gm(*Time.now.to_a)

 

使用秒数来创建日期:
====================================================
在内部,日期存储为一个整数,代表从1970年开始到当前的秒数,我们可以获取这么秒数或则利用这个秒数来创建日期:

  1. epoch = Time.at(0) # Find the epoch (1 Jan 1970 GMT)
  2. newmil = Time.at(978307200) # Happy New Millennium! (1 Jan 2001)
  3. now = Time.now # 16 Nov 2000 17:24:28
  4. sec = now.to_i #

 

日期的格式化
====================================================
获取本日是星期几:

  1. now = Time.now + 1
  2. day_num = now.wday #
  3. day_abbr = now.strftime("%a") #Wed
  4. day_full = now.strftime("%A") #Wednesday

 

获取一年中本日所在的周:

  1. t1 = Time.local(2002,5,1)
  2. 1 = Date.new(2002,5,1)
  3. week1a = t1.strftime("%U").to_i #
  4. week1b = t1.strftime("%W").to_i #
  5. week1c = d1.cweek #

 

获取当前时区:

  1. z1 = Time.gm(2000,11,10,22,5,0).zone # "UTC"
  2. z2 = Time.local(2000,11,10,22,5,0).zone # "中国标准时间"

 

格式化时间
====================================================

  1. t = Time.now
  2. puts t.strftime("%H:%M:%S") # 22:07:45
  3. puts t.strftime("%H:%M") # 22:07
  4. puts (t + 30).strftime("%H:%M") # 22:08 (加了30秒)
  5. puts t.strftime("%I:%M %p") # 10:07 PM

 

所有strftime方法中可用的格式化符号:
=====================================================

  1. %a 星期的缩写,如Wed
  2. %A 星期的全称,如Wednesday
  3. %U 本星期在全年中所属的周数
  4. %W
  5. %H 小时(24小时制)
  6. %M 分钟
  7. %S
  8. %I 小时(12小时制)
  9. %p PM AM
  10. %b 月份的缩写,如 Jan
  11. %B 月份的全称,如 January
  12. %c 本地日期和时间,如 06/14/07 16:43:49
  13. %d 日期 (1..31)
  14. %j 本日在一年中所属的天 (1..366)
  15. %m 月份 (1..12)
  16. %w 星期的数字形式 (0..6)
  17. %x 本地日期,如 06/14/07
  18. %Y 本地时间,如 16:43:49
  19. %y 2位的年份表示,如07
  20. %Y 4位的年份表示,如2007
  21. %Z 时区名,如"中国标准时间"
  22. %% 字面符号%

原文:http://hi.baidu.com/quick9999/item/caf3c454d308e3c09e26673a

 

 

以上就是【转】ruby 时间日期处理的详细内容,更多关于【转】ruby 时间日期处理的资料请关注九品源码其它相关文章!