Pythonのstrptimeで日付を解析しよう!初心者向けのやさしい解説
生徒
「Pythonで“2025年9月3日”みたいな文字を、ちゃんと日付として使いたいんですけど、どうすればいいですか?」
先生
「それは良いところに気がつきましたね。Pythonにはstrptimeという便利な関数があって、文字列を日付として扱えるようにできますよ。」
生徒
「それって、例えば“2025/09/03”みたいな書き方でも大丈夫なんですか?」
先生
「はい!書き方に合わせてフォーマットを指定すれば、どんな形式でも柔軟に変換できます。詳しく見ていきましょう。」
1. Pythonで日付を扱うには?(datetimeモジュールの基本)
プログラミングの世界では、「2026/01/29」という文字は、単なる記号の並び(文字列)として扱われます。しかし、カレンダーのように「1週間後を計算する」あるいは「日付の順に並べ替える」といった操作をするには、コンピューターにそれが「日付である」と認識させなければなりません。
Python(パイソン)で日付や時間を効率よく操作するために用意されているのが、datetime(デイトタイム)という標準モジュールです。これを使うことで、複雑な時間の計算も驚くほど簡単になります。
未経験者向け:文字列と日付データの違い
# これはただの「文字」なので、足し算や引き算ができません
date_text = "2026-01-29"
# datetimeを使うと、計算可能な「日付データ」として扱えます
from datetime import datetime
print("Pythonで日付を扱う準備ができました!")
例えば、Webサイトの入力フォームやExcelから読み込んだ「2026-01-29」という文字を、システムで利用できる「本物の日付データ」に変換したいときに登場するのが、今回詳しく解説するstrptime(ストリピーエム)関数です。この道具をマスターすることが、Pythonで日付操作を自由自在に行うための第一歩となります。
2. strptimeとは?初心者向けに基礎から使い方を解説
Pythonで日付を扱う際に必ずといっていいほど登場するのがstrptimeです。
これは「String Parse Time」の略で、人間が読みやすい「日付の文字列」を、コンピューターが計算しやすい「日付専用のデータ形式(datetimeオブジェクト)」に変換(解析)する役割を持っています。
たとえば、Webサイトの入力フォームやCSVファイルから読み込んだ日付は、プログラム上ではただの「文字(String)」として扱われます。
そのままでは「1日後を計算する」といった操作ができません。そこでstrptimeを使い、プログラムが「これは日付だ」と認識できる状態にする必要があります。
プログラミングが初めての方でも分かりやすい、具体的な変換例を見てみましょう。
from datetime import datetime
# 1. 変換したい「日付の文字」を用意します
date_text = "2025年09月03日 14時30分"
# 2. strptimeを使って、文字の並び順(フォーマット)を指定して変換します
# %Yは年、%mは月、%dは日、%Hは時、%Mは分を指します
parsed_date = datetime.strptime(date_text, "%Y年%m月%d日 %H時%M分")
# 3. 結果を表示してみましょう
print(f"変換前: {type(date_text)}") # <class 'str'>(ただの文字)
print(f"変換後: {type(parsed_date)}") # <class 'datetime.datetime'>(日付データ)
print(parsed_date)
変換前: <class 'str'>
変換後: <class 'datetime.datetime'>
2025-09-03 14:30:00
このように、datetimeオブジェクトに変換されることで、「来週の同じ時間を調べる」「曜日に合わせてメッセージを変える」といった、日付ならではの便利な操作が自由自在にできるようになります。
3. 変換の鍵!フォーマット文字(書式化記法)の種類と役割
Pythonで文字列を日付に変換する際、最も重要なのが「フォーマット文字」です。これは、コンピュータに対して「この数字は『年』だよ」「ここは『月』だよ」と教えてあげるための専用のラベルのようなものです。
プログラミング未経験の方でも、まずは以下の代表的なラベル(フォーマット文字)をパズルのピースのように組み合わせるだけで、自由自在に日付を操れるようになります。
| フォーマット文字 | 意味(役割) | 具体例 |
|---|---|---|
%Y |
西暦(4桁) | 2026 |
%m |
月(01〜12) | 01(1月のこと) |
%d |
日(01〜31) | 29 |
%H |
時(24時間表記) | 13(午後1時のこと) |
%M |
分(00〜59) | 45 |
%S |
秒(00〜59) | 08 |
例えば、「2026年1月29日」という日本語混じりのデータがあった場合、strptimeには %Y年%m月%d日 と指定することで、Pythonが正しく日付として認識してくれます。記号だけでなく、間の文字(年、月、日、スラッシュなど)も正確に合わせるのがコツです。
初心者のためのミニ解説:
大文字の %Y は4桁(2026)、小文字の %y は下2桁(26)を指します。基本的には、間違いを防ぐために4桁の %Y を使う癖をつけておくと安心ですよ!
実際の使い方サンプル
「/(スラッシュ)」で区切られたよくある日付形式を変換してみましょう。
from datetime import datetime
# 1. 元になる「文字列」を用意
date_string = "2026/01/29 15:30"
# 2. 文字列の形式に合わせてフォーマット文字を配置
# %Y/%m/%d %H:%M と書くことで、スラッシュやコロンの位置を一致させます
date_format = "%Y/%m/%d %H:%M"
# 3. 実際に変換を実行
converted_date = datetime.strptime(date_string, date_format)
print(f"変換後の型: {type(converted_date)}")
print(f"変換後の値: {converted_date}")
4. よくある日付形式の例とコード解説
Pythonで日付を扱う際、元となるデータの形はさまざまです。ここでは、実務や学習で特によく遭遇する3つのパターンを例に、strptimeの使い方を詳しく解説します。
「どの記号がどの数字に対応しているか」を意識しながらコードを見ていくと、初心者の方でもすぐにコツを掴めますよ。
例1:日本語特有の「年月日」形式(2025年9月3日)
日本のシステムで最も多い形式です。漢字を含めて正確に指定するのがポイントです。
from datetime import datetime
# 解析したい文字列
date_str = "2025年9月3日"
# 年(%Y)、月(%m)、日(%d)の間に漢字をそのまま入れます
parsed = datetime.strptime(date_str, "%Y年%m月%d日")
print(parsed)
2025-09-03 00:00:00
解説:%Yは西暦4桁、%mは月、%dは日を表します。文字の中に含まれる「年」「月」「日」という漢字も、フォーマット指定の中にそのまま記述することで正しく認識されます。
例2:スラッシュ区切りの海外式(03/09/2026)
CSVデータや海外のログファイルでよく見かける「日/月/年」の順番です。
from datetime import datetime
date_str = "03/09/2026"
# 日(%d) / 月(%m) / 年(%Y) の順番で指定します
parsed = datetime.strptime(date_str, "%d/%m/%Y")
print(parsed)
2026-09-03 00:00:00
解説:日本と順番が逆になるため、%d(日)を先頭に書くのがミソです。区切り文字のスラッシュ(/)も忘れずに指定しましょう。
例3:時刻まで含む詳細データ(2026/01/29 18:45:10)
Webサービスの注文履歴やシステムログなど、秒単位まで記録されている場合に使用します。
from datetime import datetime
date_str = "2026/01/29 18:45:10"
# 日付と時刻の間にある「半角スペース」も正確に入力します
parsed = datetime.strptime(date_str, "%Y/%m/%d %H:%M:%S")
print(parsed)
2026-01-29 18:45:10
解説:%Hは時(24時間表記)、%Mは分、%Sは秒を意味します。日付と時間の間の「スペース」をフォーマット指定に入れ忘れるとエラーになるので注意してください。
5. strptime関数を活用した実践的な日付操作
strptimeを使って文字列を「日付データ(datetimeオブジェクト)」に変換できると、単なる文字の羅列ではできなかった計算や比較が驚くほど簡単にできるようになります。プログラミング初心者の方でもすぐに使える、実用的な活用例を見ていきましょう。
- ???? 日付から曜日を自動取得: 「2026-01-29」が何曜日かを一瞬で判定
- ⏳ 残り日数の計算: イベント日や締め切りまで「あと何日か」を算出
- ???? 未来・過去の判定: 入力された日付がすでに過ぎたものかチェック
例1:特定の日付から「曜日」を日本語で表示する
strptimeで変換した後、strftime(フォーマット変換)を組み合わせることで、好きな形式で曜日を取り出せます。
from datetime import datetime
# 文字列の日付を用意
date_str = "2026-05-01"
# 1. 文字列を日付データに変換
date_obj = datetime.strptime(date_str, "%Y-%m-%d")
# 2. 曜日を数値で取得(0が月曜、6が日曜)
weeks = ["月", "火", "水", "木", "金", "土", "日"]
w_index = date_obj.weekday()
print(f"{date_str} は {weeks[w_index]}曜日 です")
例2:今日から数えて「あと何日」かを計算する
「日付」同士を引き算するだけで、簡単に期間(日数)を割り出すことができます。これが文字列のままだとできない最大のメリットです。
from datetime import datetime
# ターゲットの日付(例:旅行の日など)
target_str = "2026-12-31"
target_date = datetime.strptime(target_str, "%Y-%m-%d")
# 今日の日付を取得
today = datetime.now()
# 引き算をして差分(days)を取り出す
diff = target_date - today
print(f"2026年終了まで、あと {diff.days} 日です!")
datetime.now() で取得した現在の時刻と、strptime で作成した過去や未来の日付を比べることで、カウントダウンタイマーのような仕組みも簡単に作れます。
6. 文字列から日付に変換できなかったときのエラー対策(ValueError)
プログラミングをしていると、ユーザーが入力した日付の形式がバラバラだったり、存在しない日付(例:2月30日)が混ざっていたりすることがよくあります。そのまま変換しようとすると、プログラムは「ValueError」というエラーを出して強制終了してしまいます。
そこで役立つのが「try-except(トライ・エクセプト)構文」です。これは、「とりあえず処理を試してみて(try)、もしエラーが起きたら別の処理をする(except)」という仕組みです。これを使えば、たとえ変換に失敗してもプログラムを止めずに、ユーザーへ「入力が間違っていますよ」と優しく伝えることができます。
from datetime import datetime
# 変換したい文字列(わざと形式を間違えています)
date_str = "2025-09-03"
try:
# 期待している形式は「/」区切りですが、入力は「-」なのでエラーになります
parsed = datetime.strptime(date_str, "%Y/%m/%d")
print("変換成功!:", parsed)
except ValueError:
# エラーが発生したときだけ、ここが実行されます
print("【エラー】日付の形式が正しくありません!「年/月/日」の形式で入力してください。")
【エラー】日付の形式が正しくありません!「年/月/日」の形式で入力してください。
この書き方を覚えておくと、実務でWebフォームやデータ分析のプログラムを作る際に、予期せぬ入力ミスによるシステム停止を防げるようになります。プログラミング未経験の方でも、「エラーが出たら捕まえて、メッセージを出す」という流れを意識するだけで、格段に使いやすいツールが作れるようになりますよ。
7. datetimeとの違いがわからない人へ
strptimeは「文字列 → 日付」に変換する関数で、逆に「日付 → 文字列」にしたいときは、strftimeという関数を使います。覚え方は、「strp」はparse(読み取る)、「strf」はformat(書き出す)です。
8. パソコン初心者の方向け補足
文字列(もじれつ)とは、コンピューターの中で「文章」や「記号」のかたまりを意味します。「2025年9月3日」や「こんにちは」などがそれに当たります。
そして日付というのは、コンピューターが「計算」や「順番」で使えるように変換した「特別な情報」です。
strptimeは、文字のままでは使えない「日付のような文字」を、パソコンが計算できる「本物の日付データ」にしてくれる道具なのです。
まとめ
Pythonで日付解析を行う重要性とstrptimeの役割
今回の記事ではPythonで日付を扱う方法としてdatetimeモジュールとstrptime関数について詳しく解説しました。プログラミング初心者の方にとっては「日付は文字列ではないのか」という疑問を持つことが多いですが、実際には日付を計算や比較に使うためには専用のデータ形式に変換する必要があります。このときに活躍するのがstrptimeです。Pythonのデータ処理やWeb開発、データ分析の現場では日付操作は非常に頻繁に登場するため、基礎からしっかり理解しておくことが大切です。
strptimeを使うことで、文字列として扱われていた日付データをdatetimeオブジェクトへと変換できるようになります。これにより日付の比較や並び替え、期間計算、曜日判定などの処理が簡単に実装できるようになります。特にPython初心者にとっては、日付の変換処理は最初の大きな壁ですが、一度理解してしまえば多くの場面で応用できる強力なスキルになります。
フォーマット指定を理解することが最大のポイント
strptimeを使う際に最も重要なのがフォーマット文字の理解です。年や月や日、時刻などの位置を正確に指定することで、どのような形式の文字列でも正しく日付として解析することができます。例えばスラッシュ区切りや日本語の年月日、時刻付きデータなど、現場で扱うデータはさまざまな形式で保存されています。そのため、フォーマット指定を柔軟に書けるようになることが、Pythonの日付処理において非常に重要です。
またフォーマット文字は単なる記号ではなく、日付データを正確に読み取るためのルールです。このルールを理解することで、CSVデータやログファイル、Excelデータなど、さまざまなデータソースに対応できるようになります。初心者の方はまず基本的なフォーマットから覚え、徐々に応用的な形式に慣れていくのが効率的です。
実務で役立つ日付計算と活用例
strptimeで日付データに変換した後は、Pythonのdatetime機能を使ってさまざまな処理が可能になります。例えば特定の日付の曜日を取得したり、現在の日付との差分を計算したりすることで、業務システムやWebサービスに役立つ機能を簡単に実装できます。イベントの残り日数を表示する機能や、過去データの分析、ログデータの整理など、実務での利用シーンは非常に多いです。
特にデータ分析の分野では、日付の整形と解析は欠かせない処理です。CSVファイルやデータベースから取得した日付情報は文字列として扱われることが多いため、strptimeを使って正しく変換することで、データ分析の精度を高めることができます。
サンプルプログラムで復習しよう
from datetime import datetime
# 文字列の日付
date_str = "2026-01-29"
# 日付に変換
date_obj = datetime.strptime(date_str, "%Y-%m-%d")
# 曜日を取得
week_list = ["月", "火", "水", "木", "金", "土", "日"]
weekday = week_list[date_obj.weekday()]
print("変換後の日付:", date_obj)
print("曜日:", weekday)
# 日付の差分計算
today = datetime.now()
diff = date_obj - today
print("あと何日:", diff.days)
初心者がつまずきやすいポイント
Pythonでstrptimeを使う際に多くの初心者がつまずくのはフォーマットの不一致によるエラーです。例えばスラッシュとハイフンの違いや、年月日の順番の違いなど、わずかな違いでもエラーが発生します。このような場合はエラーメッセージを確認し、フォーマット指定が正しいかを見直すことが重要です。またtry構文を使ったエラー処理を行うことで、実務でも安全に日付変換を行うことができます。
さらにstrptimeとstrftimeの違いも混乱しやすいポイントです。strptimeは文字列から日付へ変換する関数であり、strftimeは日付から文字列へ変換する関数です。この違いをしっかり理解しておくことで、日付処理の理解が一気に深まります。
Python初心者が次に学ぶべきステップ
今回学んだstrptimeの知識を活かすことで、Pythonでのデータ処理やデータ分析の幅が大きく広がります。次のステップとしては、Pandasを使った日付データの処理や、時系列データの分析に進むことがおすすめです。これにより、より実践的なデータ分析スキルを身につけることができます。
日付処理はWeb開発や業務システム、データ分析などあらゆる分野で必要とされる基本スキルです。今回の内容をしっかり復習し、実際にコードを書いて動かすことで理解を深めていきましょう。
生徒
「文字列だった日付を計算できる形に変えるのがこんなに重要だとは思いませんでした。」
先生
「そうですね。Pythonでデータを扱うなら、日付の変換は必須のスキルになります。」
生徒
「フォーマットを合わせるのが少し難しかったですが、慣れればできそうです。」
先生
「最初は誰でも戸惑いますが、実際に何度も試すことで自然と理解できます。」
生徒
「これで日付の比較や計算もできるようになりそうです。」
先生
「はい。次はデータ分析やPandasと組み合わせて、さらに実践的なスキルを身につけていきましょう。」