この記事のポイント
Time#monthメソッドは、日時データから月を数値で取得する重要な機能です。プログラミング初心者でも理解できるよう、基本的な使い方から実践的な応用例まで段階的に解説していきます。
Timeオブジェクトから1から12の数値で月を取得する基本機能 現在時刻や指定日時から月の情報を簡単に抽出できる便利性 条件分岐や繰り返し処理と組み合わせた実践的な活用方法 以下では、具体的なコード例を交えながら、Time#monthメソッドの使い方を詳しく見ていきましょう。
Time#monthメソッドとは? Time#monthメソッドは、Time オブジェクトが持つ日時情報から「月」の部分を整数で取得するメソッドです。戻り値は1から12の整数で、1が1月、12が12月を表します。このメソッドは引数を必要とせず、単純にTimeオブジェクトに対して呼び出すだけで使用できます。
日時処理において最も基本的なメソッドの一つであり、条件分岐や表示処理など幅広い場面で活用されています。プログラムで日付を扱う際に、特定の月に基づいた処理を行いたい場合に欠かせない機能です。
【関連】Rubyをもっと詳しく学ぶならpaizaラーニング
基本構文 Time#monthメソッドの基本的な使用方法を、実際のコード例で確認してみましょう。最もシンプルな使い方は、現在時刻から月を取得する方法です。
current_time = Time.now
puts current_time.month
実行する
出力結果(例)
12
※このページ内のコードの出力結果の一部で、実行した時刻により変動するものがあります。また、時刻はUTC形式で計算されるため、日本時間での計算結果と異なる場合があります
特定の日時を指定してTimeオブジェクトを作成し、その月を取得することも可能です。以下は2024年5月15日のTimeオブジェクトを作成し、月を取得する例です。
specified_time = Time.new(2025, 5, 15)
month_value = specified_time.month
puts "指定した日時の月: #{month_value}"
実行する
出力結果
指定した日時の月: 5
実用例 ここからは、Time#monthメソッドをより実践的な場面で活用するサンプルコードを紹介します。日常的なプログラミングでよく遭遇するシナリオを想定し、それぞれのコード例で異なる使い方やテクニックを紹介しています。
条件分岐を使った月に応じた処理、配列やハッシュと組み合わせた月名の表示、繰り返し処理での月データの操作など、実際の開発現場でも応用できる内容です。各例では、コードの動作を理解しやすくするため、出力結果に動物の名前を使用しています。
月に応じた動物の分類 春夏秋冬の季節に応じて、それぞれの季節を代表する動物を表示する例です。現在の月を取得して季節判定を行います。
current_month = Time.now.month
case current_month
when 3..5
puts "春の動物: ウサギ"
when 6..8
puts "夏の動物: セミ"
when 9..11
puts "秋の動物: リス"
else
puts "冬の動物: ペンギン"
end
実行する
出力結果(例)
秋の動物: リス
月名を日本語で表示 数値で取得した月を、分かりやすい日本語の月名に変換して表示するプログラムです。配列のインデックスを活用した実用的な例です。
month_names = ["", "睦月", "如月", "弥生", "卯月", "皐月", "水無月", "文月", "葉月", "長月", "神無月", "霜月", "師走"]
animal_months = ["", "トラ", "ウサギ", "ドラゴン", "ヘビ", "ウマ", "ヒツジ", "サル", "トリ", "イヌ", "イノシシ", "ネズミ", "ウシ"]
current_month = Time.now.month
puts "#{month_names[current_month]}(#{current_month}月)の動物: #{animal_months[current_month]}"
実行する
出力結果(例)
長月(9月)の動物: イヌ
複数の日付から月を抽出 複数のTimeオブジェクトから月の情報をまとめて取得し、配列として管理する例です。繰り返し処理との組み合わせを学べます。
dates = [Time.new(2025, 1, 15), Time.new(2025, 6, 20), Time.new(2025, 12, 25)]
animals = ["サル", "ライオン", "シロクマ"]
dates.each_with_index do |date, index|
puts "#{date.month}月の動物: #{animals[index]}"
end
実行する
出力結果
1月の動物: サル
6月の動物: ライオン
12月の動物: シロクマ
月の日数を計算 各月の最終日を求めることで、月ごとの日数を計算するプログラムです。Time.new メソッドの特性を活用した応用例です。
year = 2024
target_month = 2
next_month = target_month == 12 ? 1 : target_month + 1
next_year = target_month == 12 ? year + 1 : year
last_day = Time.new(next_year, next_month, 1) - 1
puts "#{target_month}月(#{last_day.day}日まで)の動物: フクロウ"
実行する
出力結果
2月(29日まで)の動物: フクロウ
生年月日から年齢計算 誕生日のTimeオブジェクトから月を取得し、現在の月と比較して詳細な年齢計算を行うプログラムです。実際のアプリケーションでもよく使われる例です。
birth_date = Time.new(2020, 8, 15)
current_date = Time.now
# 誕生年と現在の年を取得
birth_year = birth_date.year
current_year = current_date.year
animal_age = current_year - birth_year
# 誕生月を取得
birth_month = birth_date.month
puts "誕生月: #{birth_month}月"
puts "ゾウの年齢:#{animal_age}歳"
実行する
出力結果(例)
誕生月: 8月
ゾウの年齢:5歳
月次レポート生成 過去12か月分のデータを生成し、各月に対応する情報を表示するプログラムです。ビジネスアプリケーションでの活用例を想定しています。
12.times do |i|
report_date = Time.now - (i * 30 * 24 * 60 * 60)
month = report_date.month
puts "#{month}月のレポート: #{['パンダ', 'コアラ', 'カンガルー'][i % 3]}のデータ"
break if i >= 2
end
実行する
出力結果(例)
9月のレポート: パンダのデータ
8月のレポート: コアラのデータ
7月のレポート: カンガルーのデータ
月ごとの条件分岐 特定の月の動物を表示する例です。業務システムでの月次処理や季節商品の管理などに応用できます。
check_months = [1, 6, 12]
animals = ["タヌキ", "キツネ", "オオカミ"]
check_months.each_with_index do |month, index|
time_obj = Time.new(2024, month, 1)
puts "#{time_obj.month}月の特別な動物: #{animals[index]}"
end
実行する
出力結果
1月の特別な動物: タヌキ
6月の特別な動物: キツネ
12月の特別な動物: オオカミ
月の比較 2つの異なる日付の月を比較し、その結果に基づいて処理を分岐する例です。期間比較や有効期限チェックなどで活用できます。
date1 = Time.new(2024, 3, 10)
date2 = Time.new(2024, 9, 20)
month1 = date1.month
month2 = date2.month
if month1 < month2
puts "#{month1}月は#{month2}月より前です(動物: チーター)"
else
puts "#{month1}月は#{month2}月以降です(動物: ナマケモノ)"
end
実行する
出力結果
3月は9月より前です(動物: チーター)
まとめ Time#monthメソッドは、日時処理における基本的な機能として、さまざまな場面で活用できる便利なメソッドです。引数を必要とせず、Timeオブジェクトに対して直接呼び出すだけで月の情報を1から12の整数で取得できるシンプルさが特徴です。
Time#monthメソッドの活躍する場面
季節判定や月次処理などの条件分岐での月の特定
レポート生成や統計処理における期間指定での活用
年齢計算や有効期限チェックなどの日付比較処理
重要なポイント
戻り値は必ず1から12の整数で一貫性が保たれている
他のTimeメソッドと組み合わせることで複雑な日時処理が可能
配列のインデックスや条件分岐と相性が良く実装しやすい
このメソッドをマスターすることで、Rubyでの日時処理がより効率的かつ直感的になり、実用的なプログラムの開発に大いに役立つでしょう。
レベルを更に上げたい方はpaizaプログラミングスキルチェックへ