Python|日付や時間と文字列を相互に変換する:strptime(), strftime()

1. はじめに

Pythonで日付や時刻を扱う場面は、ログ管理、ファイル命名、自動処理など、さまざまな用途があります。
しかし、「日付を文字列にしたい」「文字列から日付に変換したい」という場面で、
どの関数を使えばいいのか迷うこともあるでしょう。

本記事では、Python|日付や時間と文字列を相互に変換する:strptime(), strftime()をテーマに、
日付と文字列の相互変換に使うstrftime()strptime()の基本的な使い方から、
実務でよく使われる応用パターン、注意点までをわかりやすく解説します。

 

2. Pythonのstrftime()とstrptime()の基本

2-1. strftime()の使い方:日付や時刻 → 文字列へ変換

strftime()は、datetimeオブジェクトから任意の形式の文字列を生成するための関数です。

from datetime import datetime

# 現在の日時を取得
now = datetime.now()

# 日時を「YYYY-MM-DD HH:MM:SS」形式の文字列に変換
date_str = now.strftime("%Y-%m-%d %H:%M:%S")
print(date_str)

実行結果:

2025-07-24 22:30:45

2-2. strptime()の使い方:文字列 → 日付や時刻に変換

strptime()は、特定のフォーマットで記述された日付文字列をdatetimeオブジェクトに変換する関数です。

from datetime import datetime

# 文字列からdatetimeオブジェクトへ変換
date_str = "2025-07-24 22:30:45"
dt_obj = datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S")
print(dt_obj)

実行結果:

2025-07-24 22:30:45

 

3. よくある使い方・応用例

3-1. ファイル名に日時を付けたいとき

ログファイルや出力ファイルにタイムスタンプを付けたいときに便利なのがstrftime()です。

from datetime import datetime

# ファイル名に使うための日時文字列を作成
now = datetime.now()
filename = now.strftime("log_%Y%m%d_%H%M%S.txt")
print(filename)

実行結果:

log_20250724_223045.txt

3-2. ユーザー入力の文字列から日付を判定

Webフォームやコマンドラインで受け取った日付文字列をdatetimeオブジェクトに変換して使いたい場合、
strptime()が役立ちます。

from datetime import datetime

# ユーザー入力された文字列(日付形式はYYYY/MM/DD)
user_input = "2025/07/24"

# datetime型に変換
dt = datetime.strptime(user_input, "%Y/%m/%d")
print(dt.date())

実行結果:

2025-07-24

3-3. 異なるフォーマットに再変換する

一度datetimeに変換してから別のフォーマットで出力したいときも便利です。

from datetime import datetime

# 元の文字列(日付形式:YYYY-MM-DD)
original = "2025-07-24"

# datetimeに変換後、他形式で文字列出力
dt = datetime.strptime(original, "%Y-%m-%d")
formatted = dt.strftime("%B %d, %Y")  # 月名付きの形式
print(formatted)

実行結果:

July 24, 2025

 

4. 注意点・エラー対策

4-1. フォーマットが一致しないとエラー

strptime()でよくあるエラーは、フォーマットが合っていない場合のValueErrorです。

from datetime import datetime

try:
    # フォーマットに誤りあり(MMとmmを間違えている)
    dt = datetime.strptime("2025-07-24", "%Y-%m-%dd")
except ValueError as e:
    print("エラー発生:", e)

実行結果:

エラー発生: time data '2025-07-24' does not match format '%Y-%m-%dd'

4-2. よく使うフォーマット指定子まとめ

書式 意味
%Y 西暦(4桁) 2025
%m 月(2桁) 07
%d 日(2桁) 24
%H 時(24時間制) 22
%M 30
%S 45
%B 月名(英語) July
%a 曜日(省略形) Thu

 

5. まとめ

今回は、Pythonで日付や時刻と文字列を相互に変換する方法として、strftime()strptime()の使い方を解説しました。
これらはファイル操作・ログ出力・ユーザー入力処理など、あらゆる場面で頻出する便利な関数です。

実務では、「文字列を受け取って日付に変換し、整形して出力する」といった処理が多く発生するため、
本記事の内容をマスターしておくと、日付処理の場面でスムーズに対応できるようになります。

独学中の方は、strftime()strptime()を自分のプロジェクトでどんどん使ってみるのがおすすめです。
「この日時形式をどう書くのか?」と調べながら使うことで、自然と知識が定着します。

タイトルとURLをコピーしました