ValueError: time data does not match format

Python
本ページはプロモーションが含まれています

はじめに

Pythonでコードを書いている時にエラーが発生しました。
発生したのは文字列が入った2次元配列を日付に変換しているときでした。

今回はその時のエラーの原因と対象方法についてです。

エラー&原因

まず発生したエラーですが

ValueError: time data ' ' does not match format '

というものでした。
(' ''%Y/%m/%d %H:%M'部分は条件によって変わります)

エラーは
「値のエラー:’ ‘のTime型のデータはフォーマットに’%Y/%m/%d %H:%M’一致しません」
と言っています。
(' ''%Y/%m/%d %H:%M'部分は条件によって変わります)

このエラーは、Pythonの「datetime.strptime()」関数を使って文字列を日付時刻オブジェクトに変換する際に、指定されたフォーマットと文字列が一致しないために発生するようです。

エラーメッセージから何となくどういう時に発生するか分かるかもしれません。
次がエラーメッセージが表示されるサンプルプログラムです。

from datetime import datetime

date_str = '2023/06/12' # 時間のフォーマットがstrptimeの形式に合っていない(例では不足)
date_obj = datetime.strptime(date_str, '%Y/%m/%d %H:%M')

これを実行すると同様にエラーメッセージが表示されます。

次はエラーメッセージが表示されずに上手くプログラムが実行される例です。

from datetime import datetime

# 時間部分を含む文字列を使用
date_str = '2023/06/12 11:16'
date_obj = datetime.strptime(date_str, '%Y/%m/%d %H:%M')

変換する文字列がdatetime.strptimeの形式に一致しています。
そのためエラーにならないというわけです。

年月日だけの場合は次のようにします。

from datetime import datetime

# フォーマットを修正
date_str = '2023/06/12'
date_obj = datetime.strptime(date_str, '%Y/%m/%d')

変換するdatetime側のフォーマットを変えればいいですね。

さいごに

今回はPythonの日付の変換のときのエラーについてでした。
datetime.strptimeは便利な関数なので使えるとコーディングが楽になりますね。

また日付データは扱いが個人的には面倒な印象もなります。
ただ、日付データを扱う事は多いですので使えるようになると便利ですね。

この記事がお役に立ったのなら嬉しいです。
最後までお読みいただきありがとうございます。

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