我用一個聲明,如下圖所示,以創建一個字符串datetime
對象:在我的代碼使用`datetime.strftime`和`datetime.strptime` interprete%Y不同
t = datetime.strptime("0023-10-10", "%Y-%m-%d")
後來,某處的t
對象並調用strftime
方法具有相同的格式的字符串:
t.strftime("%Y-%m-%d")
這導致ValueError: year=23 is before 1900; the datetime strftime() methods require year >= 1900
。
似乎在這兩種類似的方法中,%Y輸入的驗證是不同的。 所以我要做到以下幾點,以確保我不接受一些不好的幾年如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的版本,所使用的實現被限制爲年> = 1900或1000。 strptime是在Python中實現的,並沒有相同的限制。請參閱[功能請求](http://bugs.python.org/issue1777412)。 – unutbu