English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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.utcTime.gm および Time.local 関数

これらの関数は以下のように標準フォーマットの日付をフォーマットするために使用できます:

# 7月 8, 2008
Time.local(2008, 7, 8)  
# 7月 8, 2008, 09:10午前、ローカル時間
Time.local(2008, 7, 8, 9, 10)   
# 7月 8, 2008, 09:10 UTC
Time.utc(2008, 7, 8, 9, 10)  
# 7月 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)。
%H一日の何時間目、24 時間制度(00から 23)。
%I一日の何時間目、12 時間制度(01 から 12)。
%j年の何日目(001 から 366)。
%m年の何ヶ月目(01 から 12)。
%M時間の何分目(00から 59)。
%p子午線指示(AMまたはPM)。
%S分の何秒目(00または 60)。
%U現在年の週数、最初の日曜日(第1週の最初の日)から始まる(00から 53)。
%W現在年の週数、最初の月曜日(第1週の最初の日)から始まる(00から 53)。
%w一週間のどの日に属するか(日曜日が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