Ruby Time.strptimeメソッドの使い方

この記事のポイント

Rubyプログラミングにおいて、文字列形式の日付データを扱う場面は多く存在します。本記事では、そうした課題を解決するTime.strptimeメソッドについて詳しく解説していきます。

  • 文字列からTimeオブジェクトへの変換機能と基本的な使用方法
  • フォーマット指定子を活用した多様な日付形式への対応方法
  • 実際の開発現場で役立つ具体的なコード例とその応用方法

これらのポイントを押さえることで、効率的な日付処理が可能になります。

目次

Time.strptimeメソッドとは?

Time.strptimeメソッドは、文字列で表現された日付や時刻をTimeオブジェクトに変換するメソッドです。このメソッドを使用することで、多様な形式の日付文字列を統一された形式で扱えるようになります。

第一引数に変換したい文字列、第二引数にその文字列のフォーマットを指定することで動作します。フォーマット指定子として%Yは4桁年、%mは月、%dは日を表し、これらを組み合わせてさまざまな日付形式に対応できます。開発現場では、外部システムからの日付データやユーザー入力の日付文字列を処理する際に頻繁に使用される重要なメソッドです。

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

基本構文

Time.strptimeメソッドの基本的な構文は、Time.strptime(文字列, フォーマット)の形式です。最も基本的な使用例として、ハイフン区切りの日付文字列をTimeオブジェクトに変換する場合を見てみましょう。フォーマット指定子の%Y-%m-%dは、4桁年-2桁月-2桁日の形式を表します。また、時刻情報も含める場合は%H:%M:%Sを追加して時分秒を指定できます。これらの基本パターンを理解することで、さまざまな日付形式に応用できるようになります。

# 基本的な日付変換 require 'time' time1 = Time.strptime("2025-03-15", "%Y-%m-%d") puts time1

出力結果

2025-03-15 00:00:00 +0000
# 時刻付きの日付変換 require 'time' time2 = Time.strptime("2025-03-15 14:30:25", "%Y-%m-%d %H:%M:%S") puts time2

出力結果

2025-03-15 14:30:25 +0000

実用例

Time.strptimeメソッドの実用例として、開発現場でよく遭遇する日付形式の変換パターンを紹介します。

外部APIからのレスポンスデータ、CSVファイルの日付列、ユーザーフォームからの入力値など、多様な形式の日付文字列を統一的に処理する必要があります。各サンプルコードでは、実際に使用頻度の高い日付形式を取り上げ、適切なフォーマット指定子の使い方を詳しく解説していきます。

これらの例を参考に、自分のプロジェクトに適した日付処理を実装してください。

基本的な日付文字列変換

最も基本的なハイフン区切りの日付文字列をTimeオブジェクトに変換する例です。この形式は多くのデータベースシステムで標準的に使用されています。

require 'time' date_string = "2025-12-25" christmas = Time.strptime(date_string, "%Y-%m-%d") puts "変換元: #{date_string}" puts "変換後: #{christmas}" puts "動物の誕生日: #{christmas.strftime('%Y年%m月%d日')} にネコが生まれました"

出力結果

変換元: 2025-12-25
変換後: 2025-12-25 00:00:00 +0000
動物の誕生日: 2025年12月25日 にネコが生まれました

スラッシュ区切りの日付変換

アメリカ式の月/日/年形式の日付文字列を変換する例です。この形式は海外のシステムとの連携時によく遭遇します。

require 'time' us_date = "03/15/2025" parsed_date = Time.strptime(us_date, "%m/%d/%Y") puts "アメリカ式日付: #{us_date}" puts "変換結果: #{parsed_date}"

出力結果

アメリカ式日付: 03/15/2025
変換結果: 2025-03-15 00:00:00 +0000

時刻付き日付文字列変換

詳細な時刻情報を含む日付文字列の変換例です。ログファイルやタイムスタンプデータの処理でよく使用されます。

require 'time' datetime_string = "2025-06-10 15:45:30" precise_time = Time.strptime(datetime_string, "%Y-%m-%d %H:%M:%S") puts "元の文字列: #{datetime_string}" puts "Timeオブジェクト: #{precise_time}" puts "#{precise_time.hour}時#{precise_time.min}分にウサギが餌を食べました"

出力結果

元の文字列: 2025-06-10 15:45:30
Timeオブジェクト: 2025-06-10 15:45:30 +0000
15時45分にウサギが餌を食べました

月名を含む日付形式変換

英語の月名を含む日付文字列を処理する例です。国際化対応のアプリケーションでしばしば必要となります。

require 'time' month_name_date = "March 20, 2025" converted_time = Time.strptime(month_name_date, "%B %d, %Y") puts "英語日付: #{month_name_date}" puts "変換後: #{converted_time}" puts "#{converted_time.month}月にハムスターが冬眠から目覚めました"

出力結果

英語日付: March 20, 2025
変換後: 2025-03-20 00:00:00 +0000
3月にハムスターが冬眠から目覚めました

12時間形式の時刻変換

AM/PM表記を含む12時間形式の時刻文字列を24時間形式に変換する例です。ユーザーインターフェースでよく使用される形式です。

require 'time' twelve_hour_format = "2025-11-03 02:30:15 PM" converted_time = Time.strptime(twelve_hour_format, "%Y-%m-%d %I:%M:%S %p") puts "12時間形式: #{twelve_hour_format}" puts "24時間形式: #{converted_time}" puts "午後#{converted_time.hour - 12}時半にキツネが森を駆け抜けました"

出力結果

12時間形式: 2025-11-03 02:30:15 PM
24時間形式: 2025-11-03 14:30:15 +0000
午後2時半にキツネが森を駆け抜けました

ISO8601形式の日付変換

国際標準規格ISO8601形式の日付文字列を処理する例です。API間のデータ交換でよく使用される形式です。

require 'time' iso_date = "2025-05-18T09:15:30" iso_time = Time.strptime(iso_date, "%Y-%m-%dT%H:%M:%S") puts "ISO8601形式: #{iso_date}" puts "標準形式: #{iso_time}" puts "朝#{iso_time.hour}時にシマリスが木の実を集めていました"

出力結果

ISO8601形式: 2025-05-18T09:15:30
標準形式: 2025-05-18 09:15:30 +0000
朝9時にシマリスが木の実を集めていました

曜日情報を含む日付変換

曜日名を含む完全な日付文字列の変換例です。レポートやログの可読性向上のために使用されます。

require 'time' full_date = "Wednesday, January 15, 2025" full_time = Time.strptime(full_date, "%A, %B %d, %Y") puts "完全な日付: #{full_date}" puts "Timeオブジェクト: #{full_time}" puts "#{full_time.strftime('%A')}曜日にクマが蜂蜜を見つけました"

出力結果

完全な日付: Wednesday, January 15, 2025
Timeオブジェクト: 2025-01-15 00:00:00 +0000
Wednesdayにクマが蜂蜜を見つけました

まとめ

Time.strptimeメソッドは、文字列形式の日付データをTimeオブジェクトに変換するための強力で柔軟なメソッドです。さまざまなフォーマット指定子を組み合わせることで、国際的な日付形式から独自の形式まで幅広く対応できます。適切な使い方をマスターすることで、データ処理の効率性と正確性を大幅に向上させることができます。

Time.strptimeメソッドの活躍する場面

  • 外部APIからの日付データ受信時における統一フォーマットへの変換処理
  • CSVファイルやデータベースからの日付文字列を扱う際の前処理作業
  • ユーザー入力フォームで受け取った日付文字列の検証と変換処理

重要なポイント

  • フォーマット指定子の正確な理解と適切な組み合わせによる柔軟な対応
  • タイムゾーン情報を含む日付処理時の注意点と正しい扱い方
  • エラーハンドリングを含めた堅牢な日付変換処理の実装方法

これらの知識を活用して、信頼性の高い日付処理システムを構築してください。

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

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