web-dev-qa-db-ja.com

Python 3.3で時間文字列をフォーマットする

現在の現地時間を、年-月-日時:分:秒という形式の文字列として取得しようとしています。ロギングに使用します。ドキュメントを読んで、次の方法でこれを行うことができます。

import time
'{0:%Y-%m-%d %H:%M:%S}'.format(time.localtime())

しかし、私はエラーが発生します:

トレースバック(最新の呼び出しは最後):
 FileError、1行目、
 ValueError:Invalid format specifier 

私は何を間違えていますか?もっと良い方法はありますか?

17
markmnl

time.localtime 戻り値 time.struct_timeこれはstrftimeのようなフォーマットをサポートしていません。

パス - datetime.datetime strftimeフォーマットをサポートするオブジェクト。 (見る - datetime.datetime.__format__

>>> import datetime
>>> '{0:%Y-%m-%d %H:%M:%S}'.format(datetime.datetime.now())
'2014-02-07 11:52:21'
33
falsetru

代わりに time.strftime

time.strftime('{%Y-%m-%d %H:%M:%S}')
14
sashkello

また、Python(3.6+、 https://www.python.org/dev/peps/pep-0498/ 完全を期すために)=)の新しいバージョンの場合、より新しい文字列フォーマットを使用できます。

import datetime

today = datetime.date.today()

f'{today:%Y-%m-%d}'
> '2018-11-01'
9
seaders