Warum liefert "Strftime ("%y ")` kein 4-stelliges Jahr für Daten <1000 Anzeigen im DateTime-Modul von Python unter LinuxPython

Python-Programme
Anonymous
 Warum liefert "Strftime ("%y ")` kein 4-stelliges Jahr für Daten <1000 Anzeigen im DateTime-Modul von Python unter Linux

Post by Anonymous »

Ich bin verwirrt von einer Inkonsistenz beim Aufrufen von .Strftime () für Daten, die vor-1000 Anzeigen sind, und verwenden Sie Pythons DateTime Modul.

Code: Select all

import datetime
old_date = datetime.date(year=33, month=3, day=28)  # 28th March 33AD

old_date.isoformat()
>>> "0033-03-28"  # Fine!

old_date.strftime("%Y-%m-%d")
>>> "33-03-28"  # Woah - where did my leading zeros go?

# And even worse
datetime.datetime.strptime(old_date.strftime("%Y-%m-%d"), "%Y-%m-%d")
>>>
...
File "", line 1, in 
File "/usr/lib/python3.12/_strptime.py", line 554, in _strptime_datetime
tt, fraction, gmtoff_fraction = _strptime(data_string, format)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/_strptime.py", line 333, in _strptime
raise ValueError("time data %r does not match format %r" %
ValueError: time data '33-03-28' does not match format '%Y-%m-%d'
Die Dokumentation zeigt Beispiele für %y Erfolge von Jahren mit Null-Padd-Jahren. Selbst mit %g , das als ISO-8601-4-stelliges Jahr dokumentiert ist, zeigt nur zwei Ziffern. Dies, da dies zu offensichtlich erscheint, um in Python ein Fehler zu sein. Ich benutze Python 3.12 auf Ubuntu 24.04.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post