Python|文字列”yyyymmdd”を日付型に変換する方法

1. はじめに

Pythonで日付を扱う際、文字列フォーマットでデータが渡されることはよくあります。中でも「yyyymmdd形式の文字列」を日付型(datetime型)に変換したいという場面は、データ処理やログ分析など、実務でも頻繁に登場します。

この記事では、Pythonで”yyyymmdd”形式の文字列をdatetime型に変換する方法を、具体的なコードと共に解説します。Python初心者〜中級者の方が、独学でも理解できるように丁寧に説明します。

 

2. Pythonにおける文字列と日付型の基本

2-1. datetimeモジュールとは

Pythonで日付や時刻を扱うには、標準ライブラリのdatetimeモジュールを使うのが一般的です。このモジュールには、文字列を日付型に変換したり、逆に日付型を文字列に変換する関数が含まれています。

2-2. strptime()で文字列から日付に変換

文字列をdatetime型に変換するには、datetime.strptime()関数を使います。この関数は「string parse time」の略で、指定したフォーマットに従って文字列を解析し、日付型に変換してくれます。

from datetime import datetime

# yyyymmdd形式の文字列
date_str = "20250710"

# datetime型に変換
date_obj = datetime.strptime(date_str, "%Y%m%d")

print(date_obj)

実行結果:

2025-07-10 00:00:00

 

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

3-1. 日付の整形と出力

変換した日付を「yyyy-mm-dd」などの形式で表示したい場合は、strftime()を使います。

from datetime import datetime

date_str = "20250710"
date_obj = datetime.strptime(date_str, "%Y%m%d")

# yyyy-mm-dd形式に整形して出力
formatted = date_obj.strftime("%Y-%m-%d")
print(formatted)

実行結果:

2025-07-10

3-2. 日付の差分を計算

datetime型に変換しておけば、日付の引き算も簡単です。例えば2つの日付の差分(日数)を計算できます。

from datetime import datetime

date_str1 = "20250710"
date_str2 = "20250101"

date1 = datetime.strptime(date_str1, "%Y%m%d")
date2 = datetime.strptime(date_str2, "%Y%m%d")

delta = date1 - date2
print(delta.days)

実行結果:

190

3-3. ファイル名やログ名の生成に使う

システムログやバックアップファイルの名前に日付を埋め込むこともよくあります。

from datetime import datetime

date_str = "20250710"
date_obj = datetime.strptime(date_str, "%Y%m%d")

# ファイル名に使用
filename = f"log_{date_obj.strftime('%Y-%m-%d')}.txt"
print(filename)

実行結果:

log_2025-07-10.txt

 

4. 注意点・エラー対策

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

strptime()でよくあるミスは、フォーマットの指定ミスです。例えば、”2025-07-10″ のようにハイフンが含まれているのに "%Y%m%d" で解析しようとするとエラーになります。

# 間違った例
datetime.strptime("2025-07-10", "%Y%m%d")

実行結果:

ValueError: time data '2025-07-10' does not match format '%Y%m%d'

4-2. 入力データの検証を忘れずに

実務では、外部から渡される日付文字列が必ずしも正しいとは限りません。try-exceptで例外処理をしておくのが安全です。

from datetime import datetime

date_str = "20250799"  # 存在しない日付

try:
    date_obj = datetime.strptime(date_str, "%Y%m%d")
    print(date_obj)
except ValueError as e:
    print(f"エラー: {e}")

実行結果:

エラー: day is out of range for month

 

5. まとめ

  • datetime.strptime()で”yyyymmdd”形式の文字列を簡単に日付型に変換できる。
  • 日付型にしておけば、整形・計算・ファイル名生成など幅広く活用可能。
  • フォーマットミスや例外処理を忘れずに対応することが大切。

この知識は、ログ解析・データ処理・自動レポート生成など、実務で非常に役立つスキルです。Pythonでのデータ操作に慣れていくための第一歩として、ぜひ手を動かして試してみてください!

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