0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RubyのTimeクラスを理解する

Last updated at Posted at 2021-12-18

目的

コーディングテストのオブジェクト指向問題において、クエリの処理などの時間を使用するものが多いためまとめる

DateクラスとTimeクラス

  • Dateクラス
    • 日付のみを扱いたい場合に使用
  • Timeクラス
    • 日付と時刻を扱いたい場合に使用

Timeクラス(timeライブラリを含む)のよく使うメソッド

parse メソッド

  • 時間の文字列からTimeクラスオブジェクトに変換
  • parseメソッドはRubyの組み込みのTimeクラスのメソッドではなく、timeライブラリによって拡張することによって使用可能となるため、先頭にrequireの記述が必要
require 'time' # 拡張

time_str = "2021/11/5 14:00:32"
time_obj = Time.parse(time_str)
=> 2021-11-05 14:00:32 +0900

Time オブジェクト同士減算

  • 時間の差を出したい時がある
    • Timeオブジェクトに変換して、減算してあげることで差が求まる
    • 結果は秒数のFloat型で変換
time1 = "2021/11/5 14:00:32"
time2 = "2021/11/5 15:42:32"
time1_obj = Time.parse(time1)
time2_obj = Time.parse(time2)
time2_obj - time1_obj

=> 6120.0

# 秒数の絶対値が返るわけではない
time1_obj - time2_obj
=> -6120.0

秒で返るので分に直す

  • 分単位で扱いたい場合
  • Numeric クラスを拡張してあげてもいいかもしれない
class Float
  def to_minutes
    (self / 60).to_i
  end
end

time1 = "2021/11/5 14:00:32"
time2 = "2021/11/5 15:42:32"
time1_obj = Time.parse(time1)
time2_obj = Time.parse(time2)

(time2_obj - time1_obj).to_minutes

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?