【Python】日付(date)と文字列を相互に変換する方法:strptimeとstrftime

Pythonで日付データ(date 型)をCSVやログから読み込むために「文字列から変換」したり、逆に画面表示のために「文字列へ変換」したりする処理は非常に頻繁に行われます。

datetime 型と同様に strptimestrftime メソッドを使用しますが、date 型特有のポイント(.date() メソッドの使用など)を含めて解説します。

目次

実装例:日付形式の変換処理

ここでは、スラッシュ区切りの日付文字列 "2025/10/12" を読み込み、date オブジェクトとして処理した後、ハイフン区切りの文字列 "2025-10-12" に変換して出力するシナリオを実装します。

ソースコード

from datetime import datetime, date

# --- 1. 文字列から date オブジェクトへの変換 ---
input_str = "2025/10/12"

# step 1: datetime.strptime(文字列, フォーマット) で datetime型に変換
# %Y: 西暦4桁, %m: 月, %d: 日
dt_obj = datetime.strptime(input_str, "%Y/%m/%d")

# step 2: .date() メソッドで、時刻情報を切り捨てて date型を取得
d_obj = dt_obj.date()

print(f"変換後の型  : {type(d_obj)}")
print(f"日付データ  : {d_obj}")

print("-" * 30)

# --- 2. date オブジェクトから文字列への変換 ---
# strftime(フォーマット) を使用して、任意の形式の文字列にする
# ここでは "YYYY-MM-DD" 形式に変換
output_str = d_obj.strftime("%Y-%m-%d")

print(f"出力文字列  : {output_str}")
print(f"出力の型    : {type(output_str)}")

実行結果

変換後の型  : <class 'datetime.date'>
日付データ  : 2025-10-12
------------------------------
出力文字列  : 2025-10-12
出力の型    : <class 'str'>

解説

文字列 → date (strptime)

datetime.strptime() は、常に「日付+時刻」を持つ datetime オブジェクトを返します。 そのため、date 型(日付のみ)として扱いたい場合は、末尾に .date() メソッドを呼び出して変換する必要があります。

  • 構文: datetime.strptime(date_string, format).date()

date → 文字列 (strftime)

date オブジェクトが持つ strftime() メソッドを使うことで、指定した書式の文字列に変換できます。

  • 構文: date_object.strftime(format)
  • 主な書式:
    • %Y/%m/%d → 2025/10/12
    • %Y-%m-%d → 2025-10-12
    • %d %B %Y → 12 October 2025

補足:ISO形式の場合

Python 3.7以降、"2025-10-12" のような標準的なISO 8601形式(ハイフン区切り)であれば、より高速な date.fromisoformat() メソッドが利用可能です。

d = date.fromisoformat("2025-10-12")
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次