python - 2 digit years using strptime() is not able to parse birthdays very well -


निम्नलिखित जन्मदिनों को ध्यान में रखें (जैसा कि dob ):

  • 1-जून -68
  • 1-जून -69

पायथन की datetime.strptime (dob, '% d-% b-% y) के साथ पार्स किया गया ') उत्पन्न करेगा:

  • datetime.datetime (2068, 6, 1, 0, 0)
  • वस्तुतः वे उसी दशक में पैदा होने वाले हैं लेकिन अब यह यहां तक ​​कि यहां तक ​​नहीं है। एक ही सदी!

    यह पूरी तरह से वैध व्यवहार के अनुसार है:

    जब 2-अंकीय वर्ष स्वीकार किए जाते हैं, तो वे पीओएसआईआईएस या एक्स / ओपन मानक के अनुसार परिवर्तित होते हैं: 69-99 के मूल्यों को 1 9 69-199 9 तक मैप किया जाता है, और 0-68 मानों को 2000-2068 तक मैप किया जाता है।

    मैं समझता हूं कि फ़ंक्शन की स्थापना इस तरह की है, लेकिन यह एक तरीका है इस के आसपास काम करते हो? शायद 2-अंकों के वर्षों के लिए अपनी सीमाओं को परिभाषित करने के साथ?

    यदि आप हमेशा इसे जन्मदिन के लिए उपयोग कर रहे हैं , यदि साल बाद के साल बाद सिर्फ 100 घटाना:

      अगर डी & gt; Datetime.now (): d = datetime (d.year - 100, d.month, d.day)  

Comments