RubyのDateTimeクラスで日付を取得する方法【初心者向け】

初心者向けにRubyでDateTimeクラスを使う方法について解説しています。日付を扱う場面は多いので、データ取得のやり方を実際に取得・出力を行うコードを書きながら覚えていきましょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

RubyでDateTimeクラスを使う方法について解説します。

 

Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

DateTimeクラスの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

DateTimeクラスとは

Rubyの標準ライブラリには、日付、日時を扱うクラスが存在します。

DateTimeクラスは、Dateクラスのサブクラスで、日時を扱う為のクラスです。

例えば、投稿された記事の日付のフォーマットを変更したい場合や、現在時刻の表示を行いたい場合などに利用します。

 

DateTimeクラスで日付を取得する

DateTimeクラスのオブジェクトを生成する場合は、newメソッドを使用して生成する、parseメソッドなどを使い、別のフォーマットの日付を与えて生成する、現在日時から生成するなどの方法があります。

require "date"

# newメソッドでDateTimeオブジェクトを生成
# DateTime.new([year[, month[, mday[, hour[, minute[, second[, offset[, start=Date::ITALY]]]]]]]])
date = DateTime.new(2018, 7, 16, 10, 11, 12, '+09:00')

# parseメソッドでDateTimeオブジェクトを生成
# DateTime.parse(str, [complete, [start]])
date = DateTime.parse('2018-07-16 00:00:00')

# 現在日時からDateTimeオブジェクトを生成
# DateTime.now([start])
date = DateTime.now

 

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

DateTimeオブジェクトは、日時に関する様々な操作が行えます。

サンプルと実行結果を確認してみましょう。

ソースコード

require "date"

d = "2018/07/16 12:00:00 +09:00"
date = DateTime.parse(d) # 指定した日付でDateTimeオブジェクトを生成

# DateTimeオブジェクをを文字列として出力
p date.to_s
# 結果: 2018-07-16T12:00:00+09:00

# フォーマットを変更して出力
p date.strftime("%Y年%m月%d日 %H:%M:%S").to_s
# 結果:2018年07月16日 12:00:00

# 時間だけ出力
p date.hour.to_s
# 結果:12

# 分を出力
p date.min.to_s
# 結果:0

# 秒を出力
p date.sec.to_s
# 結果:0

# タイムゾーンを出力
p date.zone
# 結果:+09:00

# 昨日の日付を出力
p (date - 1).to_s
# 結果:2018-07-15T12:00:00+09:00

# 先月の日付を出力
p (date << 1).to_s
# 結果:2018-06-16T12:00:00+09:00

# 1時間前を出力
p (date - Rational(1, 24)).to_s
# 結果:2018-07-16T11:00:00+09:00

 

回答してくれたメンター

中廣 誠

職種: WEBエンジニア

過去の開発実績・業務内容:
一部上場企業にて、WEBアプリケーションの受託開発、自社WEBサービス開発、自社ゲーム開発に従事
現在はフリーで活動し、ECサイト開発/運営、課題を解決するためのシステムコンサルタントなどを実施

趣味など
フリーでの活動を期に沖縄へ移住したので、海でのスキンダイビング、釣りなどを趣味にしています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。