Time类于Date类
时间的获取
Time.new
Time.now
获取当前时间的Time对象
p Time.now
sleep 1
p Time.new
t.year
t.month
t.day
获取时间对象中的年月日
t = Time.now
p t
p t.year
p t.month
p t.day
方法名 | 意义 |
---|---|
year | 年 |
month | 月 |
day | 日 |
hour | 时 |
min | 分 |
sec | 秒 |
usec | 毫秒 |
to_i | unix时间戳 |
wday | 一周中的第几天(0是星期天) |
mday | 一月中的第几天 |
yday | 一年中第一天 |
zone | 时区 |
Time.mktime(year [, month[, day [, hour [, min [, sec[, usec]]]]]])
根据指定时间获取Time对象
t = Time.mktime(2016, 1, 1, 3, 11, 12)
时间的计算
比较、运算
t1 = Time.now
sleep(10)
t2 = Time.now
p t1 < t2
#=> true
p t2 - t1
#=> 10.005073
t = Time.now
p t
#=> "2016-02-21 21:57:09 +0800"
# 一天后的时间
t2 = t + 60 * 60 * 24
p t2
#=> "2016-02-22 21:57:09 +0800"
时间的格式
t.strftime(format)
t.to_s
Time#strftime中的格式字符串
格式 | 意义与范围 |
---|---|
%A | 星期的名称(Sunday、Monday...) |
%a | 星期的缩写(Sun、Mon...) |
%B | 月份的名称(January、February...) |
%b | 月份的缩写(Jan、Feb...) |
%c | 日期与时间 |
%d | 日(01 ~ 31) |
%H | 24小时制(00 ~ 23) |
%I | 12小时制(01 ~ 12) |
%j | 一年中的天(01 ~ 366) |
%M | 分(00 ~ 59) |
%m | 表示月的数字(01 ~ 12) |
%p | 上午或下午(AM、PM) |
%s | 秒(00 ~ 60) |
%U | 表示周的数字。以星期天为一周的开始(00 ~ 53) |
%W | 表示周的数字。以星期天为一周的开始(00 ~ 53) |
%w | 表示星期的数字。0表示星期天(0 ~ 6) |
%X | 时间 |
%x | 日期 |
%Y | 表示西历的数字 |
%y | 西历的后两位(00 ~ 99) |
%Z | 时区 (JST等) |
%z | 时区(+900等) |
%% | 原封不动的输出% |
t = Time.now
p t.to_s
#=> "2016-02-21 22:09:09 +0800"
p t.strftime("%Y-%m-%d %H:%M:%S %z")
#=> "2016-02-21 22:09:09 +0800"
t.rfc2822
生成符合电子邮件头部信心中的Data
require "time"
t = Time.now
p t.rfc2822
#=> "Sun, 21 Feb 2016 22:11:05 +0800"
t.iso8601
生成符合ISO 8601国际标准时间格式的字符串
require "time"
t = Time.now
p t.iso8601
#=> "2016-02-21T22:11:57+08:00"
本地时间
t.utc
t.localtime
t = Time.now
p t
#=> 2016-02-21 22:13:11 +0800
# 切换到国际协调时间(UTC)
t.utc
p t
#=> 2016-02-21 14:13:11 UTC
# 切换回本地时间
t.localtime
p t
#=> 2016-02-21 22:13:11 +0800
从字符串中获取时间
Time.parse(str)
将字符串形式的时间,转成Time对象。
require "time"
p Time.parse("Sat Mar 30 03:54:15 UTC 2013")
p Time.parse("2016/1/1")
p Time.parse("2016-01-01 03:54:15")
日期的获取
用于处理不包含时间的日期
require "date"
d = Date.today
puts d
#=> 2016-02-21
其他用法
require "date"
d = Date.today
p d.year
p d.month
p d.day
p d.wday
p d.mday
p d.yday
按指定日期生成Date对象
require "date"
d = Date.new(2016, 3, 12)
puts d
对月末日期做-1处理
require "date"
# 2月最后一天
d = Date.new(2016, 2, -1)
puts d
#=> 2016-02-29
d = Date.new(2016, 2, -2)
puts d
#=> 2016-02-28
日期的运算
require "date"
d1 = Date.new(2016, 1, 1)
d2 = Date.new(2016, 1, 4)
puts d2 - d1
#=> 3/1 (3天的意思)
d = Date.today
puts d
puts d + 1
puts d + 100
puts d - 1
puts d - 100
require "date"
d = Date.today
puts d
#下一个的相同日期
puts d >> 1
puts d >> 100
#上一个月的相同日期
puts d << 1
日期的格式
require "date"
t = Date.today
p t.strftime("%Y-%m-%d %H:%M:%S %z")
#=> "2016-02-21 00:00:00 +0000"
从字符串中获取日期
require "date"
puts Date.parse("Sat Mar 30 03:54:15 UTC 2013")
puts Date.parse("2016/1/1")
puts Date.parse("2016-01-01 03:54:15")