【完全網羅】RubyのTime使い方まとめ

こんにちは!フリーエンジニアの長瀬です。みなさん、Rubyの勉強は進んでいますか?

RubyのTimeには実用的で細かい表現がたくさんあります。Timeを使いこなせば、今後時間の計算に悩むことはなくなるでしょう。この記事では、RubyのTimeの使い方について

  • 日時を指定する
  • 時間の要素を取り出す
  • 時間の演算方法
  • 文字列を変換
  • formatの指定
  • active_supportで使えるメソッドを増やす

というように、基本的な内容から、一歩進んだ内容まで解説していきます。

基本的なTimeの使い方

日時を指定する

それでは、まずは日時を表現する方法を学んでいきましょう。日時を指定する方法には以下のように様々な指定方法があります。

[Timeで日時を指定する方法] [実行結果] Time.nowは現在時刻を取得、Time.localまたはTime.mktimeは任意時刻を指定、Time.atはunixエポック(1970年1月1日)から何秒経過したかで日時を指定します。基本的に、現在時刻を取得したいときはTime.nowで、任意の時刻を指定したい時はTime.localを使います。

時間の要素を取り出す

Rubyでは、指定した時刻から年、月、日などの情報を取り出せます。

[指定した時刻から時間要素を取り出す] [実行結果] このようにRubyのTimeでは年、月、日、分、秒の要素を取り出すだけでなく、曜日番号、指定した日時の年の初めから何日経過したのか、タイムゾーンの確認と様々な情報を取り出せます。

時間の演算方法

rubyのTimeでは秒単位で、時間の加算ができます。また、指定時間同士を秒単位で演算することもできます。

[指定時間の加算、指定時間同士を演算する] [実行結果] このように、時間を加算したり、指定した時間同士を演算できることを確認できました。サンプルコードのように、24*60*60と秒を日に変換する工夫をすれば、日数を演算できます。

また、後半で説明するactive_supportというgemを使用すれば、さらに同様の計算を簡略化できて便利です。

次に、時間を比べてみましょう。>や<の記号を使うことで、時間軸に沿って大小関係を計算できます。

[指定した日時同士の大小関係を調べる] [実行結果] このように、結果は論理値として返されます。time1 > time2では現在時刻のtime2の方が大きいので、falseになっています。

応用的なTimeの使い方

文字列を変換

Rubyでは時間だと判断できるものを自動的にTimeオブジェクトに変換してくれるparseという便利なメソッドがあります。

[parseを使って、Timeオブジェクトに変換する] [実行結果] このように、時間と判別できるものはTimeクラスで扱える形式に変換できます。また、parseを使用するにはrequire ‘time’を先頭に記述して、有効にする必要があります。

formatの指定

Timeではstftimeを使って、formatを指定することもできます。

[strtimeを使って、formatを指定する] [実行結果] %+特定の文字で、timeで指定した要素を取り出すことができます。また、混同しやすい点として、小文字の%mは月で、大文字の%Mは分です。

入力と出力が比べやすいように番号を振ってありますので、どの要素がどの出力と対応しているかよく確認しておいてください。

active_supportで使えるメソッドを増やす

active_suportをインストールすれば、Timeオブジェクトで使えるメソッドを拡張できます。まだ、active_supportのgemをインストールしていない方は以下のコードを入力してインストールしてください。

active_supportにはたくさんのメソッドがあります。まず、何分前、何分後のように時間の前後を計算したい場合には次のようにします。

[時間の前後を計算する] また、計算ではなく定義されたメソッドで同様の計算する場合は次のようにしてください。

[メソッドを使って時間の前後を計算する] これらのメソッドを使えば、前半で紹介した時間の演算を書き換えられます。次に日、週、月、年の単位ごとに時間を調整するには次のようにしてください。

[日、週、月、年の単位ごとに時間を調整する] そして、日、週、月、年、四半期の始め、終わりの日時を計算するには次のようにしてください。

[始め、終わりの日時を計算する] 最後に月、年、四半期の範囲を出力する場合は以下の通りです。

[範囲を出力する] またactive_supportのメソッドはソースが公開されていますので、こちらを確認してください。

引用元:Github:active_support

このように、active_supportには非常にたくさんの便利なメソッドが用意されています。一つ一つ、使える場面では使えるようにしておきましょう。

まとめ

いかがでしたか?この記事では、Timeの使い方を解説しました。日時を指定、またはparseを使ってTimeオブジェクトを作成した後は、active_supportの便利なメソッドを使用して、自分好みの時間の出力を試してみてください。

また、作成した時間にformatを指定してあげることで、出力をカスタマイズできます。

Timeには非常に多くのメソッドがあります。なので、もしTimeの使い方について忘れてしまったらこの記事を確認してくださいね!

Rubyカリキュラム無料公開中!

この記事はRuby入門完全攻略ガイド【基礎学習/アプリ開発/仕事獲得】の一部になります。このカリキュラムは、プログラミング入門者が、基礎学習からアプリ開発、さらには仕事獲得まで体系的に学べる内容となっています。

Ruby学習に必要な情報を一つにまとめていますので効率よくRubyを学ぶことが出来ます。この機会に是非活用していただければと思います。

【Ruby入門ガイド】アプリ開発で知っておくべき知識を総ざらい
更新日 : 2018年11月23日

Rubyを最短で習得したい方へ

近年では様々なWEBサービスが流通するようになりました。

WEBサービスの普及が進むにつれて、それらを素早く開発するのに長けたRubyの人気は今後さらに増し、Rubyエンジニアの需要も自ずと増えることは間違いなしでしょう。

元々ITリテラシーの高い方や他言語を習得している方であれば、独学でRubyを習得することが可能です。

ただし、プログラミング学習をしている方の多くは

「自分に合った教材が見つけられずに挫折してしまった」
「勉強のための勉強になってしまい、ゴールが見えない」
「情報が少なくどう調べればいいかわからない」
「エラーを解決するのに何日もかかってしまう」

このような悩みを抱えたまま挫折してしまうのが現実となっています。

  • もう挫折したくない
  • 本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい
  • 自分だけのカリキュラムで効率的に勉強したい
  • WEBアプリケーション開発までしっかりサポートして欲しい
そんな方はお気軽に侍エンジニア塾までご相談ください。

お一人お一人に専属のインストラクターがつくので、初心者の方がつまづきがちな、「CookPad」、「Wantedly」、「食べログ」のようなWEBアプリケーション開発方法もスムーズに学習することできます。

実際にオリジナルWEBアプリを開発し、成果物として認められて仕事獲得に成功した塾生は数多くいます。

このように、オリジナルアプリ開発から仕事獲得まで徹底的にサポートすることでプログラミング初心者の方でも安心して基礎学習に取り組むことができます。

まずは『無料体験レッスン』で、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

Rubyならではの学習方法や、現役フリーランスRubyエンジニアから貴重なアドバイスを受けることができます。

詳しくは下の画像から弊社サービス内容をご確認ください。

ruby_a2
LINEで送る
Pocket

書いた人

長瀬来

長瀬来

Unityを使ったiOSアプリのリリース、フリマサイト運営の経験があります。

経験した言語はC、C#、Javascript、R、Python、Ruby、PHPなど

言語が好きで、英語や中国、ドイツ語を勉強しました。
将来的には海外で生活したいです。

現在はRuby on Rails5やCocos2dxの勉強を主にしています。

ライターとしては
できるだけ初心者にわかりやすい文章になるように心がけています。

趣味は語学、読書です。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説