मैं जैसा कि नीचे दिखाया एक बयान का उपयोग एक स्ट्रिंग से एक 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' अंततः कुछ सी फ़ंक्शन को कॉल करता है, 'strftime.' उपयोग किए गए कार्यान्वयन को Python के संस्करण के आधार पर वर्षों> = 1 9 00, या 1000 तक सीमित है। स्ट्रेटीम पाइथन में लागू किया गया है, और इसमें एक ही प्रतिबंध नहीं है। यह [सुविधा अनुरोध] देखें (http://bugs.python.org/issue1777412)। – unutbu