icon
icon

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

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

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

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

 
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

 

田島悠介

今回は、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では、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。