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
実際に書いてみよう
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エンジニア 過去の開発実績・業務内容: 趣味など |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。