本文简要介绍ruby语言中 Time类
的用法。
Time
是日期和时间的抽象。 Time
在内部存储为自 Epoch
1970-01-01 00:00:00 UTC 以来的秒数。
Time
类将 GMT(格林威治平均值 Time
)和 UTC(协调通用 Time
)视为等效。 GMT 是引用这些基线时间的较旧方式,但在 POSIX 系统上的调用名称中仍然存在。
注意:时间对象使用系统时钟上可用的分辨率。
所有时间都可能有亚秒级。相互比较时间时请注意这一事实 - 显示时明显相等的时间在比较时可能不同。 (从 Ruby 2.7.0 开始, Time#inspect
显示亚秒,但 Time#to_s
仍然不显示亚秒。)
例子
所有这些示例都是使用 GMT-5 的 EST 时区完成的。
创建新的时间实例
您可以使用 Time.new
创建 Time
的新实例。这将使用当前系统时间。 Time.now
是它的别名。您还可以将部分时间传递给 Time.new
,例如年、月、分钟等。当您想以这种方式构建时间时,您必须至少传递一年。如果您通过这一年没有别的时间将默认为该年 1 月 1 日的 00:00:00 与当前系统时区。这里有些例子:
Time.new(2002) #=> 2002-01-01 00:00:00 -0500
Time.new(2002, 10) #=> 2002-10-01 00:00:00 -0500
Time.new(2002, 10, 31) #=> 2002-10-31 00:00:00 -0500
您可以传递 UTC 偏移量:
Time.new(2002, 10, 31, 2, 2, 2, "+02:00") #=> 2002-10-31 02:02:02 +0200
或时区对象:
zone = timezone("Europe/Athens") # Eastern European Time, UTC+2
Time.new(2002, 10, 31, 2, 2, 2, zone) #=> 2002-10-31 02:02:02 +0200
您还可以使用 Time.local
和 Time.utc
来推断本地和 UTC 时区,而不是使用当前系统设置。
您还可以使用 Time.at
创建一个新时间,该时间需要自 Unix Epoch 以来的秒数(亚秒)。
Time.at(628232400) #=> 1989-11-28 00:00:00 -0500
使用时间实例
一旦你有了 Time
的实例,你就可以用它做很多事情。下面是一些例子。对于以下所有示例,我们将假设您已完成以下操作:
t = Time.new(1993, 02, 24, 12, 0, 0, "+09:00")
那是星期一吗?
t.monday? #=> false
那又是哪一年?
t.year #=> 1993
当时是夏令时吗?
t.dst? #=> false
一年后是什么日子?
t + (60*60*24*365) #=> 1994-02-24 12:00:00 +0900
自 Unix 纪元以来有多少秒?
t.to_i #=> 730522800
您还可以执行标准函数,例如比较两次。
t1 = Time.new(2010)
t2 = Time.new(2011)
t1 == t2 #=> false
t1 == t1 #=> true
t1 < t2 #=> true
t1 > t2 #=> false
Time.new(2010,10,31).between?(t1, t2) #=> true
相关用法
- Ruby Time tv_sec用法及代码示例
- Ruby Time usec用法及代码示例
- Ruby Time yday()用法及代码示例
- Ruby Time succ()用法及代码示例
- Ruby Time mon()用法及代码示例
- Ruby Time.gmtime用法及代码示例
- Ruby Time iso8601用法及代码示例
- Ruby Time.at用法及代码示例
- Ruby Time.utc_offset用法及代码示例
- Ruby Time.isdst用法及代码示例
- Ruby Time.time + numeric用法及代码示例
- Ruby Time wednesday?用法及代码示例
- Ruby Time.wednesday?用法及代码示例
- Ruby Time asctime()用法及代码示例
- Ruby Time.localtime用法及代码示例
- Ruby Time hour用法及代码示例
- Ruby Time subsec()用法及代码示例
- Ruby Time xmlschema用法及代码示例
- Ruby Time.yday用法及代码示例
- Ruby Time.time <=>用法及代码示例
- Ruby Time utc_offset用法及代码示例
- Ruby Time now()用法及代码示例
- Ruby Time to_r用法及代码示例
- Ruby Time to_s用法及代码示例
- Ruby Time to_f用法及代码示例
注:本文由纯净天空筛选整理自ruby-lang.org大神的英文原创作品 Time类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。