Use datetime.strftime() on years before 1900? ("require year >= 1900")

Alex picture Alex · Apr 22, 2012 · Viewed 19.3k times · Source

I used : utctime = datetime.datetime(1601,1,1) + datetime.timedelta(microseconds = tup[5]) last_visit_time = "Last visit time:"+ utctime.strftime('%Y-%m-%d %H:%M:%S')

But I have the time of 1601, so the error show: ValueError: year=1601 is before 1900; the datetime strftime() methods require year >= 1900

I used python2.7, how can I make it? Thanks a lot!

Answer

Charles Menguy picture Charles Menguy · Apr 22, 2012

You can do the following:

>>> utctime.isoformat()
'1601-01-01T00:00:00.000050'

Now if you want to have exactly the same format as above:

iso = utctime.isoformat()
tokens = iso.strip().split("T")
last_visit_time = "Last visit time: %s %s" % (tokens[0], tokens[1].strip().split(".")[0])

Not that there seems to be a patch for strftime to fix this behavior here (not tested)