non mi rendevo conto questo, ma a quanto pare la funzione di Python strftime
non supporta le date prima del 1900:C'è un modo per usare una funzione simile a strftime per date precedenti al 1900 in Python?
>>> from datetime import datetime
>>> d = datetime(1899, 1, 1)
>>> d.strftime('%Y-%m-%d')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: year=1899 is before 1900; the datetime strftime() methods require year >= 1900
Sono sicuro che avrei potuto incidere qualcosa insieme a me stesso di fare questo, ma immagino che la funzione è strftime
c'è una ragione (e c'è anche una ragione per cui non può supportare le date precedenti al 1900). Devo essere in grado di supportare le date prima del 1900. Vorrei solo usare str
, ma c'è troppa variazione. In altre parole, potrebbe avere o meno microsecondi o potrebbe avere o meno un fuso orario. c'è qualche soluzione a questo?
Se fa la differenza, lo sto facendo in modo che possa scrivere i dati in un file di testo e caricarlo in un database utilizzando Oracle SQL * Loader.
In sostanza ho finito per fare la risposta di Alex Martelli. Ecco un'implementazione più completa:
>>> from datetime import datetime
>>> d = datetime.now()
>>> d = d.replace(microsecond=0, tzinfo=None)
>>> str(d)
'2009-10-29 11:27:27'
L'unica differenza è che str(d)
è equivalente a d.isoformat(' ')
.
Questo è fondamentalmente quello che ho finito per fare. –