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講座を開催しています。

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

独学に限界を感じたら…テックアカデミーに相談しよう

プログラミングを独学していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 独学に不安を抱えている方へ、現役エンジニア講師とマンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう 厳しい試験を通過した講師 があなたの相談に真摯に向き合います。

「ただ気になることを相談したい」
「漠然としているがプロの話を聞いてみたい」

こんな気持ちでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料で予約する