tôi sử dụng một tuyên bố như hình dưới đây để tạo ra một đối tượng datetime
từ một chuỗi:'datetime.strftime` và' datetime.strptime` phiên dịch% Y khác nhau
t = datetime.strptime("0023-10-10", "%Y-%m-%d")
Sau đó, ở đâu đó trong sử dụng mã của tôi đối tượng t
và gọi phương thức strftime
với chuỗi định dạng tương tự:
t.strftime("%Y-%m-%d")
Điều này gây ra một ValueError: year=23 is before 1900; the datetime strftime() methods require year >= 1900
.
Dường như việc xác thực đầu vào% Y là khác nhau trong hai phương pháp tương tự này. Vì vậy, tôi phải làm những điều sau đây để chắc chắn rằng tôi không chấp nhận một số năm xấu như 23
:
try:
format = "%Y-%m-%d"
t = datetime.strptime("0023-10-10", format)
t.strftime(format)
except ValueError:
...
Tôi tự hỏi nếu có một cách tốt hơn để làm xác nhận này.
Tôi vẫn không hiểu tại sao hạn chế này không được áp dụng cho 'strptime'. – satoru
'datetime.strftime' cuối cùng gọi một số hàm C,' strftime.' Việc triển khai thực hiện được giới hạn trong năm> = 1900 hoặc 1000 phụ thuộc vào phiên bản của Python. strptime được thực hiện bằng Python, và không có cùng hạn chế. Xem [yêu cầu tính năng] này (http://bugs.python.org/issue1777412). – unutbu