當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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類。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。