Ruby – 日付と時刻~RUBY入門〜RUBYTUTORIAL〜

スポンサーリンク

本当にわからないとこがあった場合一人では解決できません。
『teratail』とはエンジニア特化型のQ&Aサイトです。 すべてのエンジニアさんが抱えている悩みを共有して 解決するための質問サイトです
無料なのでまずは登録して使ってみてください。メールアドレスだけで登録可能です ----------------------------------------------------------------------------------------

Ruby – 日付と時刻


Rubyで日付と時刻を表します。これは、オペレーティングシステムによって提供されるシステムの日付と時刻の機能上の薄いレイヤーです。このクラスでは、1970年以前または2038年以降の日付を表すことができない場合があります。

この章では、最も必要と思われる日付と時間の概念を理解しています。

現在の日付と時刻の取得


以下は、現在の日付と時刻を取得する簡単な例です。

#!/usr/bin/ruby -w

time1 = Time.new

puts "Current Time : " + time1.inspect

# Time.now is a synonym:
time2 = Time.now
puts "Current Time : " + time2.inspect

このようになります

Current Time : Mon Jun 02 12:02:39 -0700 2008
Current Time : Mon Jun 02 12:02:39 -0700 2008

日付と時刻のコンポーネントの取得


Timeオブジェクトを使用して、日付と時刻のさまざまなコンポーネントを取得できます。以下は同じものを示す例です –

#!/usr/bin/ruby -w

time = Time.new

# Components of a Time
puts "Current Time : " + time.inspect
puts time.year    # => Year of the date 
puts time.month   # => Month of the date (1 to 12)
puts time.day     # => Day of the date (1 to 31 )
puts time.wday    # => 0: Day of week: 0 is Sunday
puts time.yday    # => 365: Day of year
puts time.hour    # => 23: 24-hour clock
puts time.min     # => 59
puts time.sec     # => 59
puts time.usec    # => 999999: microseconds
puts time.zone    # => "UTC": timezone name

これにより、次の結果が生成されます。

Current Time : Mon Jun 02 12:03:08 -0700 2008
2008
6
2
1
154
12
3
8
247476
UTC

Time.utc、Time.gm、およびTime.local関数


これらの2つの関数を使用して、次のように標準形式で日付をフォーマットすることができます。

# July 8, 2008
Time.local(2008, 7, 8)  
# July 8, 2008, 09:10am, local time
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 (same as 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

これにより、次の結果が生成されます。

[26, 10, 12, 2, 6, 2008, 1, 154, false, "MST"]

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

#!/usr/bin/ruby -w

time = Time.new

values = time.to_a
puts Time.utc(*values)

これにより、次の結果が生成されます。

Mon Jun 02 12:15:36 UTC 2008

以下は、(プラットフォームに依存する)エポックタイムから内部的に秒単位で表される時間を得る方法です。

# Returns number of seconds since epoch
time = Time.now.to_i  

# Convert number of seconds into Time object.
Time.at(time)

# Returns second since epoch which includes microseconds
time = Time.now.to_f

タイムゾーンとサマータイム


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

time = Time.new

# Here is the interpretation
time.zone       # => "UTC": return the timezone
time.utc_offset # => 0: UTC is 0 seconds offset from UTC
time.zone       # => "PST" (or whatever your timezone is)
time.isdst      # => false: If UTC does not have DST.
time.utc?       # => true: if t is in UTC time zone
time.localtime  # Convert to local timezone.
time.gmtime     # Convert back to UTC.
time.getlocal   # Return a new Time object in local zone
time.getutc     # Return a new Time object in UTC

時間と日付の書式設定


日付と時刻の書式を設定する方法はさまざまです。ここでは、

#!/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")

これにより、次の結果が生成されます。

Mon Jun 02 12:35:19 -0700 2008
Mon Jun  2 12:35:19 2008
Mon Jun 02 12:35:19 -0700 2008
2008-06-02 12:35:19

時刻書式ディレクティブ


次の表のこれらのディレクティブは、Time.strftimeメソッドで使用されます。

Sr.No. 指令および説明
1 %a短縮された曜日名(日)。
2 %A曜日の完全な名前(日曜日)。
3 %b短縮月名(Jan)。
4 %B完全な月の名前(1月)。
5 %c好ましいローカル日時表現。
6 %d日(01〜31)。
7 %H24時間制(00〜23)。
8 %私1時間、12時間制(01〜12)。
9 %j日(001〜366)。
10 %m月(01〜12)。
11 %M時間の分(00〜59)。
12 %p経絡指標(AMまたはPM)。
13 %S分の秒(00〜60)。
14 %U現在の年の週番号。最初の日曜日を最初の週の最初の日(00〜53)とします。
15 %W現在の年の週番号。最初の月曜日が最初の週の最初の日(00〜53)です。
16 %w曜日(日曜日は0、0〜6)。
17 %✖️
日付だけのための好ましい表現、時間なし。
18 %✖️時間単独、日付なしの好ましい表現。
19 %y1世紀なしの年(00〜99)。
20 %Y世紀の年。
21 %Zタイムゾーン名。
22 %%リテラル%文字。

時間計算

次のように時間とともに簡単な算術演算を実行できます。

now = Time.now           # いまの時間
puts now

past = now - 10          # 今から10秒前
puts past

future = now + 10        # 今から10秒後
puts future

diff = future - now      # みらいの時間から今を引く
puts diff

これにより、次の結果が生成されます。

Thu Aug 01 20:57:05 -0700 2013
Thu Aug 01 20:56:55 -0700 2013
Thu Aug 01 20:57:15 -0700 2013
10.0

 

スポンサーリンク

プログラミングは独学からは挫折の可能性が高いです。まずは無料体験ができる
コードキャンプが本当におすすめ。無料体験でわからないところを聞きましょう。
転職補助つき。カリキュラム終了後に転職紹介をしてくれます。