スポンサーリンク

2015年5月22日

Rubyにおける日時のクラスを使ってみる

タイトル:Rubyにおける日時のクラスを使ってみる

目的:
RubyのTime、Date、DateTimeクラスを使ってみる。
また、文字列とタイムスタンプの変換も同時に使ってみる。

実施環境:
OS:Windows8.1
Ruby:v2.2.2

目次:

  1. Timeクラスを使ってみる
  2. Dateクラスを使ってみる
  3. DateTimeクラスを使ってみる
  4. 文字列、タイムスタンプを変換してみる
  5. その他

1.Timeクラスを使ってみる

1.1
ソースコードは以下の通り作成した。
# encoding: utf-8
# File Name: time.rb
# Create Day is 2015/05/22
# Last Update Day is 2015/05/22
puts "Timeクラス"
time = Time.now
puts time
# フォーマットを指定して出力する
print "%Y年%m月%d日 = ", time.strftime("%Y年%m月%d日"), "\n"
puts
print "日付%x = ", time.strftime("日付%x"), "\n"
puts
print "%H時(=%I時)%M分%S秒 = ", time.strftime("%H時(=%I時)%M分%S秒"), "\n"
puts
print "時刻%X = ", time.strftime("時刻%X"), "\n"
puts
print "タイムゾーン = ", time.strftime("%Z"), "\n"
puts
print "日付+時刻 = ", time.strftime("%c"), "\n"
puts
view raw time.rb hosted with ❤ by GitHub

1.2
軽い説明をする。

「Time.now」で現在の日時が取得できる。

「strftimeメソッド」でフォーマットを指定して出力ができる。

一部のメソッドを利用するわけじゃなければ、
「require 'time'」は必要ない。

2.Dateクラスを使ってみる

2.1
ソースコードは以下の通り作成した。
# encoding: utf-8
# File Name: date.rb
# Create Day is 2015/05/22
# Last Update Day is 2015/05/22
# Require List
require 'date'
puts "Dateクラス"
date = Date.today
puts date
# フォーマットを指定して出力する
print "%Y年%m月%d日 = ", date.strftime("%Y年%m月%d日"), "\n"
puts
print "日付%x = ", date.strftime("日付%x"), "\n"
puts
print "%H時(=%I時)%M分%S秒 = ", date.strftime("%H時(=%I時)%M分%S秒"), "\n"
puts
print "時刻%X = ", date.strftime("時刻%X"), "\n"
puts
print "タイムゾーン = ", date.strftime("%Z"), "\n"
puts
print "日付+時刻 = ", date.strftime("%c"), "\n"
puts
view raw date.rb hosted with ❤ by GitHub

2.2
軽い説明をする。

使用するには「require 'date'」が必要。

「Date.today」で現在の日付を取得できる。

「strftimeメソッド」でフォーマットを指定して出力ができる。
但し、時刻に関しては、情報を保持していないので、
0で表示される(一部、%Iは12で表示されているが・・・)

3.DateTimeクラスを使ってみる

3.1
ソースコードは以下の通り作成した。
# encoding: utf-8
# File Name: date_time.rb
# Create Day is 2015/05/22
# Last Update Day is 2015/05/22
# Require List
require 'date'
puts "DateTimeクラス"
date_time = DateTime.now
puts date_time
# フォーマットを指定して出力する
print "%Y年%m月%d日 = ", date_time.strftime("%Y年%m月%d日"), "\n"
puts
print "日付%x = ", date_time.strftime("日付%x"), "\n"
puts
print "%H時(=%I時)%M分%S秒 = ", date_time.strftime("%H時(=%I時)%M分%S秒"), "\n"
puts
print "時刻%X = ", date_time.strftime("時刻%X"), "\n"
puts
print "タイムゾーン = ", date_time.strftime("%Z"), "\n"
puts
print "日付+時刻 = ", date_time.strftime("%c"), "\n"
puts
view raw date_time.rb hosted with ❤ by GitHub

3.2
軽く説明をする。

DateTimeクラスはDateのサブクラスである。
使用するには同じく「require 'date'」が必要。

「DateTime.now」で現在の日時が取得できる。

「strftimeメソッド」でフォーマットを指定して出力ができる。
Dateと違い時刻の情報も保持しているため、時刻の出力もできる。

4.文字列、タイムスタンプを変換してみる

4.1
ソースコードは以下の通り作成した。
# encoding: utf-8
# File Name: date_time.rb
# Create Day is 2015/05/22
# Last Update Day is 2015/05/22
# Require List
require 'time'
puts "Timeクラス"
time = Time.now
puts time
puts
puts time.to_s
puts Time.parse(time.to_s)
puts Time.parse("2000/11/11 11:11")
puts
# タイムスタンプを時間に変換する
# to_iで時刻をタイムスタンプに変換している
# at(タイムスタンプの値)で時刻に変換している
puts time.to_i
puts Time.at(time.to_i)
puts
# parseした文字列をタイムスタンプに変換
str_to_timestamp = Time.parse("2000/11/11 11:11").to_i
puts str_to_timestamp
puts Time.at(str_to_timestamp)
view raw parse.rb hosted with ❤ by GitHub

4.2
軽く説明をする。

時刻を文字列へ変換する場合、
「to_sメソッド」を利用する。

文字列を時刻へ変換する場合、
「Time.parseメソッド」を利用する。
(「require 'time'」が必要)

時刻をタイムスタンプへ変換する場合、
「to_iメソッド」を利用する。

タイムスタンプを時刻へ変換する場合、
「Time.atメソッド」を利用する。
(「require 'time'」が必要)

5.その他

5.1
フォーマットの指定の仕方は、
Time、Date、DateTimeクラスで共通のようです。

ある程度、使用頻度がありそうなフォーマットの指定の仕方は
ソースコードを参考にして頂ければ分かりやすいかと思います。

5.2
newする時が、どんな時か少し考察してみた。
Time, Date, DateTimeをnewする時は、
(そのままなのだが)指定時刻でオブジェクトを作成したい時だろう。

強いて上げるなら、DB等にユーザー側から値を指定して検索をする時とかだろうか?
後は、日時の差分で比較したい時とかだろうか?

5.3
これだけ、日時を扱うクラスがあるならば使い分けに関してどうするべきか?
以下の記事を参考にさせて頂きました。

分かりやすい・・・こういう記事書けるようになりたいですね。

以上!!

以下、参考にさせて頂いたサイト

管理人の独り言
ウィッチャー3面白い・・・
でも、プログラム程長期間に渡って遊べるわけじゃないな。
やはり趣味グラムは非常に良いおもちゃだ。

ちょっと思ったのだが、Bloggerでブログをやる時、
更新通知をTwitterに流したいのだが、現在手動でやっている。

それはちょっと・・・っと思ったので自動化する方法を調べたのだが、
何かに登録しなきゃいけないようだ。

面倒くさいので、その内BloggerのWebAPI(あるのかな?)かRSSあたりから情報を取得して、
Twitterに更新通知を出すプログラムでも作ろうかな?っと思った次第であります。
誰かやってる気がするんだけどな・・・

そっちの方が面倒くさそう?
知らんがな、そっちの方が面白そうだし!(笑)

人気の投稿