Ruby Time#strftimeメソッドの使い方

この記事のポイント

Time#strftimeメソッドについて、基本的な概念から実践的な活用方法まで丁寧に解説していきます。

  • 日時を自由自在にフォーマットできる便利なメソッド
  • フォーマット指定子を使った柔軟な文字列変換機能
  • Webアプリケーション開発で必須となる日時表示テクニック

これらのポイントを押さえることで、日時処理を効率的に行えるようになります。

目次

Time#strftimeメソッドとは?

Time#strftimeメソッドは、Timeオブジェクトを指定したフォーマットの文字列に変換するメソッドです。strftimeは「string format time」の略称で、C言語のstrftime関数に由来します。このメソッドを使用することで、年月日や時分秒を自由な形式で表示できます。

フォーマット指定子と呼ばれる特殊な記号を組み合わせることで、「2024年3月15日」や「03/15/2024 14:30」といった多様な表示形式を実現できます。Webアプリケーション開発やログ出力、レポート生成など、日時を扱うあらゆる場面で重宝する機能です。

【関連】
Rubyをもっと詳しく学ぶならpaizaラーニング

基本構文

Time#strftimeメソッドの基本的な構文は非常にシンプルです。Timeオブジェクトに対してstrftimeメソッドを呼び出し、引数にフォーマット文字列を指定するだけで使用できます。以下の例では、%Yが4桁の年、%mが月、%dが日を表しています。%Hは24時間形式の時、%Mが分、%Sが秒を示します。フォーマット指定子を組み合わせることで、必要な形式の日時文字列を簡単に作成できます。

current_time = Time.now formatted_date = current_time.strftime("%Y年%m月%d日") puts formatted_date

出力結果(例)

2025年03月15日

※このページ内のコードの出力結果の一部で、実行した時刻により変動するものがあります。また、時刻はUTC形式で計算されるため、日本時間での計算結果と異なる場合があります

current_time = Time.now formatted_time = current_time.strftime("%H時%M分%S秒") puts formatted_time

出力結果(例)

14時30分25秒

実用例

Time#strftimeメソッドの実用例では、実際の開発現場でよく使われるパターンを中心に紹介します。

Webアプリケーションでのユーザー向け表示、ログファイルのタイムスタンプ、データベース連携用フォーマットなど、さまざまな場面で活用できるサンプルコードを用意しました。各例では具体的な出力結果も確認でき、どのような場面でどのフォーマットを使えば良いかが理解できます。フォーマット指定子の組み合わせ方法や、実際のシステム開発で求められる日時表示パターンを習得しましょう。

基本的な日付表示

最も基本的な日付表示パターンです。年月日を分かりやすい形式で表示します。この例では和暦形式と英語形式の両方を示しており、国際化対応アプリケーションでの使い分けが可能です。%Bは英語の月名をフル表記で出力します。

birthday = Time.new(2020, 5, 15) cat_birthday = birthday.strftime("%Y年%m月%d日") puts "ネコの誕生日: #{cat_birthday}" dog_birthday = birthday.strftime("%B %d, %Y") puts "イヌの誕生日: #{dog_birthday}"

出力結果

ネコの誕生日: 2020年05月15日
イヌの誕生日: May 15, 2020

時刻表示のカスタマイズ

時刻表示を目的に応じてカスタマイズする例を示します。24時間形式と12時間形式の使い分けが重要です。24時間形式(%H)は業務システム向け、12時間形式(%I)は一般ユーザー向けの表示に適しています。

feeding_time = Time.new(2025, 3, 15, 14, 30, 45) rabbit_feeding = feeding_time.strftime("ウサギの餌やり時刻: %H:%M:%S") puts rabbit_feeding hamster_feeding = feeding_time.strftime("ハムスターの餌やり時刻: %I:%M %p") puts hamster_feeding

出力結果

ウサギの餌やり時刻: 14:30:45
ハムスターの餌やり時刻: 02:30 PM

曜日と月名の日本語表示

曜日情報を含む日時の表示例です。スケジュール管理アプリケーションなどで頻繁に使用されます。%aは曜日の短縮形、%Aは曜日のフル表記を出力します。ユーザビリティを考慮した表示形式の選択が大切です。

appointment = Time.new(2025, 3, 15, 10, 0, 0) bird_checkup = appointment.strftime("トリの健康診断: %Y年%m月%d日(%a) %H:%M") puts bird_checkup fish_feeding = appointment.strftime("サカナの餌やり: %A, %B %d") puts fish_feeding

出力結果

トリの健康診断: 2025年03月15日(Sat) 10:00
サカナの餌やり: Saturday, March 15

ログファイル用タイムスタンプ

システム開発において、ログファイルのタイムスタンプは標準化された形式が求められます。そのカスタマイズ例です。ファイル名や検索しやすさを考慮して、区切り文字を使い分けることが重要です。

error_time = Time.now lion_error = error_time.strftime("[%Y-%m-%d %H:%M:%S] ライオンエラー発生") puts lion_error tiger_warning = error_time.strftime("[%Y%m%d_%H%M%S] タイガー警告ログ") puts tiger_warning

出力結果(例)

[2025-03-15 14:30:45] ライオンエラー発生
[20250315_143045] タイガー警告ログ

Webアプリケーション向け表示

Webアプリケーションでは、ユーザーにとって分かりやすい日時表示が必要です。
そのカスタマイズ例です。SNSや掲示板などでは、簡潔で視認性の高い表示形式が好まれます。

post_time = Time.new(2025, 3, 15, 9, 15, 30) elephant_post = post_time.strftime("ゾウの投稿: %m月%d日 %H:%M") puts elephant_post giraffe_comment = post_time.strftime("キリンのコメント: %Y.%m.%d %H時%M分") puts giraffe_comment

出力結果

ゾウの投稿: 03月15日 09:15
キリンのコメント: 2025.03.15 09時15分

データベース用フォーマット

データベースとの連携では、標準的なISO形式やSQL形式での出力が必要になる場面があります。そのカスタマイズ例です。データベースの日時カラムやバッチ処理での識別子として活用できる形式です。

record_time = Time.new(2025, 3, 15, 16, 45, 30) bear_record = record_time.strftime("クマのレコード: %Y-%m-%d %H:%M:%S") puts bear_record wolf_timestamp = record_time.strftime("オオカミのタイムスタンプ: %Y%m%d%H%M%S") puts wolf_timestamp

出力結果

クマのレコード: 2025-03-15 16:45:30
オオカミのタイムスタンプ: 20250315164530

ファイル名の日時フォーマット

ファイル名に日時を含める際は、OSのファイル命名規則に配慮したフォーマットが必要です。そのカスタマイズ例です。
ファイル名では特殊文字を避け、ソートしやすい形式を選ぶことが重要です。

backup_time = Time.now monkey_backup = backup_time.strftime("monkey_backup_%Y%m%d_%H%M%S.zip") puts monkey_backup panda_log = backup_time.strftime("panda_log_%Y-%m-%d.txt") puts panda_log

出力結果(例)

monkey_backup_20250315_143045.zip
panda_log_2025-03-15.txt

カスタム区切り文字での表示

特殊な要件に対応するため、さまざまな区切り文字を使用した表示例を紹介します。
デザインやブランドガイドラインに合わせた柔軟な表示が可能です。

event_time = Time.new(2025, 3, 15, 20, 30, 0) fox_event = event_time.strftime("キツネのイベント: %Y.%m.%d @ %H:%M") puts fox_event raccoon_schedule = event_time.strftime("タヌキの予定: %m/%d (%a) %I:%M%p") puts raccoon_schedule

出力結果

キツネのイベント: 2025.03.15 @ 20:30
タヌキの予定: 03/15 (Sat) 08:30PM

まとめ

Time#strftimeメソッドは、日時データを自由自在にフォーマットできる強力な機能です。基本的な使用方法から実践的な応用例まで学ぶことで、さまざまな開発シーンで適切な日時表示を実現できます。フォーマット指定子の組み合わせにより、国際化対応からシステム内部処理まで幅広いニーズに対応可能です。

Time#strftimeメソッドの活躍する場面

  • Webアプリケーションでのユーザー向け日時表示において直感的な情報提供を実現
  • ログファイルやバックアップファイルでの標準化されたタイムスタンプ出力
  • データベース連携やAPI通信での統一された日時フォーマット送受信

重要なポイント

  • フォーマット指定子を適切に組み合わせることで目的に応じた表示形式を選択
  • 国際化やローカライズを考慮して表示形式を使い分ける重要性の理解
  • システムの要件や用途に応じた最適なフォーマットパターンの選択方法

これらのポイントを押さえることで、Time#strftimeメソッドを効果的に活用し、ユーザーフレンドリーで保守性の高いWebアプリケーション開発が可能になります。日時処理は多くのシステムで必須機能であり、適切なフォーマット選択がユーザビリティ向上に直結します。

レベルを更に上げたい方はpaizaプログラミングスキルチェックへ

  1. paizaラーニングトップ
  2. リファレンス
  3. Rubyのリファレンス記事一覧
  4. Ruby Time#strftimeメソッドの使い方