您的位置:首页 > 编程语言 > Ruby

ruby对时间的处理

2016-08-04 13:10 369 查看


Ruby对时间的处理

1.当前时间

t = Time.new



t = Time.now

2.生成指定时间

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

mktime使用当前时区

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)

3.时间数组化

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)

4.使用数字秒数创建时间,其中这个整数代表从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

5. 日期的格式化

获取本日是星期几:

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 时区名,如"中国标准时间"

%% 字面符号%

我们可以使用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 时区名,如"中国标准时间"

%% 字面符号%
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: