【完全網羅】RubyのTime使い方まとめ長瀬来2017/7/252019/6/6こんにちは!フリーエンジニアの長瀬です。みなさん、Rubyの勉強は進んでいますか?RubyのTimeには実用的で細かい表現がたくさんあります。Timeを使いこなせば、今後時間の計算に悩むことはなくなるでしょう。文字列を変換formatの指定active_supportで使えるメソッドを増やすというように、基本的な内容から、一歩進んだ内容まで解説していきます。日時を指定するそれでは、まずは日時を表現する方法を学んでいきましょう。日時を指定する方法には以下のように様々な指定方法があります。+0900"Time.nowは現在時刻を取得、Time.localまたはTime.mktimeは任意時刻を指定、Time.atはunixエポック(1970年1月1日)から何秒経過したかで日時を指定します。基本的に、現在時刻を取得したいときはTime.nowで、任意の時刻を指定したい時はTime.localを使います。時間の要素を取り出すRubyでは、指定した時刻から年、月、日などの情報を取り出せます。要素を取り出すだけでなく、曜日番号、指定した日時の年の初めから何日経過したのか、タイムゾーンの確認と様々な情報を取り出せます。時間の演算方法rubyのTimeでは秒単位で、時間の加算ができます。指定時間同士を秒単位で演算することもできます。+090033195982.648783384.2127621386921このように、時間を加算したり、指定した時間同士を演算できることを確認できました。サンプルコードのように、24*60*60と秒を日に変換する工夫をすれば、日数を演算できます。後半で説明するactive_supportというgemを使用すれば、さらに同様の計算を簡略化できて便利です。次に、時間を比べてみましょう。>や<の記号を使うことで、時間軸に沿って大小関係を計算できます。time2[実行結果]falsetrueこのように、結果は論理値として返されます。time2では現在時刻のtime2の方が大きいので、falseになっています。文字列を変換Rubyでは時間だと判断できるものを自動的にTimeオブジェクトに変換してくれるparseという便利なメソッドがあります。+0900このように、時間と判別できるものはTimeクラスで扱える形式に変換できます。'time'を先頭に記述して、有効にする必要があります。formatの指定Timeではstftimeを使って、formatを指定することもできます。time.strftime("[1]ただいまの時刻は%Y年%m月%d日%H時%M分%S秒です。time.strftime("[3]西暦%Y年、その下二桁は%yです。time.strftime("[6]今月は%B、略して%b、つまり%m月です。time.strftime("[7]今日は%m月%d日です。time.strftime("[8]今日の日付と時刻は%xです。time.strftime("[9]さらに詳しく言うと、%cです。time.strftime("[10]今日は今年の1月1日から%j日目です。time.strftime("[11]今週は最初月曜日を一週間の始まりとして%W週目です。time.strftime("[12]今週は最初日曜日を一週間の始まりとして%U週目です。+0900"[1]ただいまの時刻は2017年07月24日20時50分08秒です。""[2]ただいまの時刻は20:50:08""[3]西暦2017年、その下二桁は17です。8時、それはつまり20時""[5]今日の曜日はMonday、略してMon""[6]今月はJuly、略してJul、つまり07月です。""[7]今日は07月24日です。""[8]今日の日付と時刻は07/24/17です。""[10]今日は今年の1月1日から205日目です。""[11]今週は最初月曜日を一週間の始まりとして30週目です。""[12]今週は最初日曜日を一週間の始まりとして30週目です。""[13]タイムゾーンはJST"%+特定の文字で、timeで指定した要素を取り出すことができます。混同しやすい点として、小文字の%mは月で、大文字の%Mは分です。入力と出力が比べやすいように番号を振ってありますので、どの要素がどの出力と対応しているかよく確認しておいてください。active_supportで使えるメソッドを増やすactive_suportをインストールすれば、Timeオブジェクトで使えるメソッドを拡張できます。active_supportのgemをインストールしていない方は以下のコードを入力してインストールしてください。activesupportactive_supportにはたくさんのメソッドがあります。何分前、何分後のように時間の前後を計算したい場合には次のようにします。#13年後また、計算ではなく定義されたメソッドで同様の計算する場合は次のようにしてください。#11年後これらのメソッドを使えば、前半で紹介した時間の演算を書き換えられます。次に日、週、月、年の単位ごとに時間を調整するには次のようにしてください。始め、終わりの日時を計算するには次のようにしてください。最後に月、年、四半期の範囲を出力する場合は以下の通りです。#今年の範囲またactive_supportのメソッドはソースが公開されていますので、こちらを確認してください。引用元:Github:active_supportこのように、active_supportには非常にたくさんの便利なメソッドが用意されています。一つ一つ、使える場面では使えるようにしておきましょう。まとめいかがでしたか?この記事では、Timeの使い方を解説しました。日時を指定、またはparseを使ってTimeオブジェクトを作成した後は、active_supportの便利なメソッドを使用して、自分好みの時間の出力を試してみてください。作成した時間にformatを指定してあげることで、出力をカスタマイズできます。Timeには非常に多くのメソッドがあります。Timeの使い方について忘れてしまったらこの記事を確認してくださいね!TweetPocket無料でSEからWebエンジニアへ転職しませんか?侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、システムエンジニアという職業だけどコードが書けない事務作業が多くスキルがないため将来が不安スクールに通うと完全未経験者と同じスタートになるからレベルが合わないという、すでに知識があるSEならではのお悩みがあることに気づきました。弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。こちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。長瀬来Unityを使ったiOSアプリのリリース、フリマサイト運営の経験があります。経験した言語はC、C#、Javascript、R、Python、Ruby、PHPなど言語が好きで、英語や中国、ドイツ語を勉強しました。将来的には海外で生活したいです。Rails5やCocos2dxの勉強を主にしています。ライターとしてはできるだけ初心者にわかりやすい文章になるように心がけています。趣味は語学、読書です。