当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Ruby Time类用法及代码示例


本文简要介绍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-lang.org大神的英文原创作品 Time类。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。