【Ruby入門】日付の基本と操作(Time, Date)
  • facebookページ
  • twitterページ
  • 2017.10.23

    【Ruby入門】日付の基本と操作(Time, Date)

    Rubyにおける、日付や時刻の基本と操作を解説します。

    他言語と同じように、Rubyにもやはり日付や時刻を簡単に扱える仕組みが用意されています。

    この記事を読み終わる頃には、日付や時刻の操作が思い通りにできるようになっているでしょう。

    特に、海外からアクセスされるWebシステムを開発される方、必見です!

    まず最初は時間の基本 UTCなど

    まず最初はRubyを忘れて、時間の基本を確認しましょう。

    世界の国々の現在時間は異なっている、つまり時差があるのは今さらいうまでもありません。

    日本の時間を基準にして世界各国の時間を考えると、いろいろと問題がでてきます。

    例えばお隣の中国とは1時間の時差、つまり日本が1時間進んでいます。ドイツと日本は7時間、つまり日本が7時間進んでいます。ですが、中国とドイツは、その他の国とは・・・と考え始めるとだんだんとややこしくなります。

    世界各国が自分の標準時間で物事を語り始めると、さらに複雑です。

    今や多国籍企業はめずらしい存在ではありません。大企業でなくても海外とやり取りのある、または海外に支店を置く企業は多数あります。システムは日本に設置、各国からデータを書き込みに来る、というケースもあるでしょう。

    このような場合、各国から同じデータベースに自国の標準時にて書き込みを始めると、収集がつかなくなります。世界で統一された時間の基準が欲しくなります。

    それが、協定世界時(UTC)と呼ばれるものです。

    UTCを基準として、その協定世界時から見て何時間進んでいるかを表現することにより、国ごとの標準時をいうことができます。

    日本は協定世界時から9時間の進み、つまり「UTC +9:00」、中国は「UTC +8:00」なので日本より1時間遅れ、と時差をその国の標準時を知るまでもなく計算できるのは便利ですよね。

    また、UTCと同じようにGMT(グリニッジ標準時)というものもあり、同じく「日本はGMT +9:00」と表現できます。

    最近はUTCが広く使われています。本記事でも、一貫してUTCを基準に解説します。

    Rubyにおける日付や時刻 Time/Date

    Rubyでは、日付と時刻はそれぞれDateクラス、Timeクラスを使って操作します。

    Dateクラスは年月日だけを扱います。Timeクラスは年月日時分秒を扱います。一見してTimeクラスさえあれば事足りるような気がしますがそうではありません。

    Dateクラスは、来月の同日や月末日の計算ができるという得意技があります。

    現在時刻を表示 Time.now

    TimeやDateを使い、現在の日付や時刻を取得してみましょう。

    [実行結果]

    Time.nowによってTimeオブジェクトが得られます。その結果を表示させています。

    表示時刻を書式変更 strftime

    Time.nowのもつ標準書式ではなく、それ以外の書式で表示させたい場合は、strftimeを使います。ただし、得られる結果は文字列であることを注意してください。

    [書式]

    書式の部分は、ココをご覧ください。

    いくつかサンプル的に試してみましょう。

    日付の部分をスラッシュ区切りに変えてみました。

    書式は比較的自由に設定できます。年月日だけ欲しい場合は、

    とすれば、

    [実行結果]

    が得られます。

    時刻を「作る」 mktime

    mktimeを使い、年月日時分秒を「自分で作る」ことも可能です。mktimeに引数を渡します。

    [書式]

    [使用例]

    [実行結果]

    規格に則ったフォーマット iso8501/rfc2822

    時間の表現には、何らかの規格に沿ったものもあります。

    iso8601

    国際標準であるiso8601です。

    [実行結果]

    rfc2822

    メールヘッダにある日時の規格であるrfc2822です。同じようにTimeオブジェクトを生成してから、そのオブジェクトの持つ時刻を書式に則って取得します。

    [実行結果]

    UTCを取得する

    国をまたいだ時間の管理をする場合、UTC +0:00が欲しくなります。その場合、いったんTimeオブジェクトを取得し、UTCに直します。

    [実行結果]

    日付を計算する

    Timeオブジェクトは、比較や減算が可能です。

    [実行結果]

    時間オブジェクトを生成し、そのあと2秒間おいて別のオブジェクトを生成します。そして2つのオブジェクトを引き算するだけで経過時間を取得できました。

    比較演算子を使って比較できることも確認できました。

    月末日を取得する

    どの言語でも苦労する、しかも、とても頻繁に出てくる「月末日を取得する」をやってみましょう。Dateクラスを使って簡単にできます。

    [実行結果]

    1行目のputsは、実行時の月末日を取得します。2行目のputsは、任意の年月の月末日を取得できることを表しています。

    まとめ

    本記事では、Rubyにおける日付と時刻の基本を解説しました。

    日付や時刻の扱い方を習得し、ログデータの収集や、国際間の日付や時刻の管理などにぜひお役立てください。


    Ruby on Railsのフリーランスは高収入でおすすめ!

    Rubyができる方は多くはいないのが現状です。 プロジェクトは右肩上がりで増えているので、エンジニアが全く足りておりません。 Rubyの実務経験が1年以上ある方はフリーランスになることもできるので、ぜひご興味があればポテパンの無料カウンセリングをご利用下さいませ! Ruby案件に関する情報は下記にまとまっていますのでぜひご覧下さい。

    Ruby on Rails案件のイマがわかる!知って見つかる最適案件


    ポテパンが提供するサービスについて

    本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。

    ポテパンフリーランス

    ポテパンフリーランス

    フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。

    ポテパンキャリア

    ポテパンキャリア

    エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800万円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。

    ポテパンキャンプ

    ポテパンキャンプ

    ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料10万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。



    株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

    ポテクラバナー ポテプロバナー

    この記事をシェア

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









    ABOUT US

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

    READ MORE