2

秒数が整数の日時オブジェクトがあります(例:2010-04-16 16:51:23)。次のコマンドを使用して正確な時間を抽出しています

dt = datetime.datetime.strptime(time, '%Y-%m-%d %H:%M:%S.%f

(一般的に、小数 (例: 2010-04-16 16:51:23.1456) がありますが、そうでない場合もあります。そのため、このコマンドを実行すると、エラー メッセージが表示されます。

ValueError: time data '2010-04-16 16:51:23' does not match format '%Y-%m-%d %H:%M:%S.%f'

これを解決するにはどうすればよいですか?

4

3 に答える 3

4

指定した形式がないためです。次の形式があります。

'%Y-%m-%d %H:%M:%S'

複数の解決策があります。まず、常に同じ形式でデータを生成します (.00必要に応じて追加します)。

2 番目の解決策はtry、1 つの形式でデコードし、失敗した場合は別の形式を使用してデコードすることです。

try:
    dt = datetime.datetime.strptime(time, '%Y-%m-%d %H:%M:%S.%f')
except ValueError:
    dt = datetime.datetime.strptime(time, '%Y-%m-%d %H:%M:%S')
于 2013-06-24T20:57:34.930 に答える
0

例外処理メカニズムの使用を回避する別の方法は、フィールドが存在しない場合はデフォルトに設定し、1 つのフォーマット文字列で処理を試みることです。

from datetime import datetime

s = '2010-04-16 16:51:23.123'
dt, secs = s.partition('.')[::2]
print datetime.strptime('{}.{}'.format(dt, secs or '0'), '%Y-%m-%d %H:%M:%S.%f')
于 2013-06-24T21:01:33.157 に答える