下図のように私は、文字列からdatetime
オブジェクトを作成するためのステートメントを使用します。`datetime.strftime`と` datetime.strptime` interprete%のY異なり
t = datetime.strptime("0023-10-10", "%Y-%m-%d")
その後、どこかに私のコードの用途でt
オブジェクトと同じフォーマットの文字列でstrftime
メソッドを呼び出す:これは、ValueError: year=23 is before 1900; the datetime strftime() methods require year >= 1900
を引き起こす
t.strftime("%Y-%m-%d")
。
%Y入力の検証は、この2つの同様の方法では異なるようです。 だから、私は23
のようないくつかの悪い年を受け入れないことを確認するために次の操作を実行する必要があります。
try:
format = "%Y-%m-%d"
t = datetime.strptime("0023-10-10", format)
t.strftime(format)
except ValueError:
...
この検証を行うには良い方法がありますかしら。
私はまだこの制限が 'strptime'に適用されない理由を理解していません。 – satoru
'datetime.strftime'は、最終的にC関数strftimeを呼び出します。使用される実装は、Pythonのバージョンに応じて、years> = 1900または1000に制限されています。 strptimeはPythonで実装されており、同じ制限はありません。この[機能要求](http://bugs.python.org/issue1777412)を参照してください。 – unutbu