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は便利な関数なので使えるとコーディングが楽になりますね。

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

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

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

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