Rubyで日時を扱うDateTimeを完全理解!計算・タイムゾーンの指定方法も解説
  • facebookページ
  • twitterページ
  • 2020.12.18

    Rubyで日時を扱うDateTimeを完全理解!計算・タイムゾーンの指定方法も解説

    システム開発において「日付や時刻」を扱うことは多く、Rubyでも例外なく日付処理は必須知識と言えるでしょう。

    Rubyでは、日時を扱うクラスに DateTimeTimeクラスの大きく2つが存在します。
    この記事では、 DateTimeクラスの使い方について解説していきます。

    「DateTime」クラス

    では、 DateTimeクラスを使い方を見ていきましょう。

    DateTimeクラスは、 Dateクラスから派生したクラスで、そこに時刻を扱うためのメソッドなどが加わったイメージのクラスです。

    DateTimeクラスを使い場合は、必要なライブラリを次のとおり requireで読み込んでおく必要があるため、とりあえず入れておきましょう。

    DateTimeの基本的な使い方

    requireを行って、 DateTimeクラスを使う準備ができたら、基本的な使い方から学習していきましょう。

    現在時刻を取得する

    現在時刻の取得は、おそらく日付処理の中でも最も多くのシーンで利用するでしょう。
    Rubyの DateTimeクラスでは、引数なしの newメソッドで現在時刻が取得できます。

    特定日時のDateTimeオブジェクトを作成

    newメソッドの引数を指定することで、特定日時のDateTimeオブジェクトを作成できます。

    newメソッドの引数に存在しない日時を指定すると、次のようなエラーが発生するため、注意が必要です。

    日時の計算(加算・減算)

    DateTimeクラスで、日付や時間を加減算を次のようにして行えます。

    月の加算・減算

    日付の加算・減算

    時間の加算・減算

    分の加算・減算

    秒の加算・減算

    2つの時間の差分を求める

    2つの DateTimeクラスのオブジェクトを -で減算することで、時間の差分を求められます。

    また、時間の差分は Rationalオブジェクトで返され、値が1の時は2つの日付の差が1日であることを表します。(時間の差は小数点以下の数字を計算する)

    タイムゾーン(時差)の指定

    Rubyでは、タイムゾーンのデフォルト値は、はシステム(OS)の設定および、環境変数(ENV=TZ)によって決まり、環境変数の方が優先して使用されます。

    ポテパンダの一言メモ

    指定できるタイムゾーンの一覧は、次のリンクを確認してください。

    https://en.wikipedia.org/wiki/List_of_tz_database_time_zones

    DateTimeクラスにタイムゾーンを指定する

    デフォルトのタイムゾーン以外に、個別に DateTimeオブジェクトに時差を指定することも可能です。

    個別にタイムゾーンを指定する場合、 DateTime.newメソッドの最後の引数に、世界標準時(UTC)からの時差を +0900のような形式で指定します。

    インスタンス作成済みの DateTimeオブジェクトのタイムゾーンを変更する場合は、 new_offsetメソッドを使用して、指定したタイムゾーンの DateTimeオブジェクトを新たに作成します。

    さいごに

    Rubyの DateTimeクラスの基本的な使い方を紹介してきました。

    日付・時刻に関連する処理は、どのようなシステム開発においても必ず存在するため、是非 DateTimeクラスの使い方を覚えておきましょう。



    優良フリーランス案件多数掲載中!
    フリーランスエンジニアの案件をお探しなら
    ポテパンフリーランス

    この記事をシェア

    • Facebookシェア
    • Twitterシェア
    • Hatenaシェア
    • Lineシェア
    pickup









    ABOUT US

    ポテパンはエンジニアと企業の最適なマッチングを追求する企業です。

    READ MORE