Ruby 日付 & 時間(Date & Time)

Timeクラスは Ruby で日付と時刻を表すために使用されます。これはオペレーティングシステムが提供するシステム日付と時刻に基づいています。このクラスは1970年以前または2038年以降の日付を表現できない場合があります。

このチュートリアルでは、日付と時刻に関する重要な概念をすべて学ぶことができます。

現在の日付と時刻を作成する

現在の日付と時刻を取得する簡単な例は次のとおりです:

例

#!/usr/bin/ruby -w # -*- coding: UTF-8 -*- time1 = Time.new puts "現在の時刻:" + time1.inspect #Time.now と同じ機能です time2 = Time.now puts "現在の時刻:" + time2.inspect

試してみる »

上記の例を実行した出力結果は次のとおりです:

当前时间 : 2015-09-17 15:23:14 +0800
当前时间 : 2015-09-17 15:23:14 +0800

Date & Time コンポーネントの取得

私たちは使用できますTimeオブジェクトを使用して、さまざまな日付と時刻のコンポーネントを取得できます。次の例を参照してください。

例

#!/usr/bin/ruby -w # -*- coding: UTF-8 -*- time = Time.new #Time のコンポーネント puts "現在の時刻:" + time.inspect puts time.year #=> 日付の年 puts time.month #=> 月(1 から 12) puts time.day #=> 日(1 から 31) puts time.wday #=> 曜日(0 は日曜日) puts time.yday #=> 365:年の通算日 puts time.hour #=> 23:24時間制 puts time.min # => 59 puts time.sec # => 59 puts time.usec #=> 999999:マイクロ秒 puts time.zone #=> "UTC":タイムゾーン名

上記の例を実行した出力結果は次のとおりです:

当前时间 : 2015-09-17 15:24:44 +0800
2015
9
17
4
260
15
24
44
921519
CST

Time.utc、Time.gmとTime.local関数

これらの関数は、日付を標準形式でフォーマットするために使用できます。次のようになります。

# July 8, 2008 Time.local(2008, 7, 8) #July 8, 2008, 09:10am、現地時間 Time.local(2008, 7, 8, 9, 10) # July 8, 2008, 09:10 UTC Time.utc(2008, 7, 8, 9, 10) #July 8, 2008, 09:10:11 GMT(UTC と同じ) Time.gm(2008, 7, 8, 9, 10, 11)

次の例では、すべてのコンポーネントを配列で取得します:

[sec,min,hour,day,month,year,wday,yday,isdst,zone]

次の例を試してください:

例

#!/usr/bin/ruby -w time = Time.new values = time.to_a p values

上記の例を実行した出力結果は次のとおりです:

[39, 25, 15, 17, 9, 2015, 4, 260, false, "CST"]

この配列は渡すことができますTime.utc 或 Time.local関数に渡して、日付の異なる形式を取得できます。次のようになります。

例

#!/usr/bin/ruby -w time = Time.new values = time.to_a puts Time.utc(*values)

上記の例を実行した出力結果は次のとおりです:

2015-09-17 15:26:09 UTC

以下は、紀元(エポック)からの秒数で時間を取得する方法です(プラットフォームに依存)。

#紀元からの秒数を返します time = Time.now.to_i #秒数を Time オブジェクトに変換します Time.at(time) #紀元からの秒数を返します。マイクロ秒を含みます。 time = Time.now.to_f

タイムゾーンと夏時間

あなたは使用できますTimeオブジェクトを使用して、タイムゾーンと夏時間に関するすべての情報を取得できます。次のようになります。

time = Time.new #以下は説明です。 time.zone #=> "UTC":タイムゾーンを返します time.utc_offset #=> 0:UTC は UTC に対する 0 秒のオフセットです time.zone #=> "PST"(または他のタイムゾーン) time.isdst #=> false:UTC に DST(夏時間)がない場合 time.utc? #=> true:UTC タイムゾーンの場合 time.localtime #ローカルタイムゾーンに変換する time.gmtime #UTC に変換し直す time.getlocal #ローカルタイムゾーンで新しい Time オブジェクトを返す time.getutc #UTC で新しい Time オブジェクトを返す

時間と日付のフォーマット

日付と時刻のフォーマットにはさまざまな方法があります。次の例はその一部を示しています。

例

#!/usr/bin/ruby -w time = Time.new puts time.to_s puts time.ctime puts time.localtime puts time.strftime("%Y-%m-%d %H:%M:%S")

上記の例を実行した出力結果は次のとおりです:

2015-09-17 15:26:42 +0800
Thu Sep 17 15:26:42 2015
2015-09-17 15:26:42 +0800
2015-09-17 15:26:42

時間フォーマット指令

以下の表に示した指令とメソッドTime.strftimeを一緒に使用します。

指令説明
%a曜日名の略称(例:Sun)。
%A曜日名の正式名称(例:Sunday)。
%b月名の略称(例:Jan)。
%B月名の正式名称(例:January)。
%c優先されるローカルの日付と時刻の表現。
%d月内の日(01 から 31)。
%H1日のうちの時間(24時間制)(00 から 23)。
%I1日のうちの時間(12時間制)(01 から 12)。
%j年内の通算日(001 から 366)。
%m年内の月(01 から 12)。
%M1時間の中の分(00 から 59)。
%p午前/午後の表示(AM または PM)。
%S1分の中の秒(00 または 60)。
%U現在の年の週番号。最初の日曜日を第1週の初日として開始(00 から 53)。
%W現在の年の週番号。最初の月曜日を第1週の初日として開始(00 から 53)。
%w週の何曜日か(Sunday は 0、0 から 6)。
%x時刻なしで日付のみの優先表現。
%X日付なしで時刻のみの優先表現。
%y世紀を含まない年の表現(00 から 99)。
%Y世紀を含む年。
%Zタイムゾーン名。
%%% 文字。

時間の演算

時間を使った簡単な算術演算ができます。次のようになります。

now = Time.now #現在の時刻 puts now past = now - 10 #10秒前。Time - number => Time puts past future = now + 10 #現在から10秒後。Time + number => Time puts future diff = future - now #=> 10 Time - Time => 秒数 puts diff

上記の例を実行した出力結果は次のとおりです:

2015-09-17 15:27:08 +0800
2015-09-17 15:26:58 +0800
2015-09-17 15:27:18 +0800
10.0
その他の拡張