no me di cuenta de esto, pero parece que la función de Python strftime
no es compatible con fechas anteriores al 1900:¿Hay alguna forma de utilizar una función similar a strftime para las fechas anteriores a 1900 en 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
Estoy seguro de que podría cortar juntos algo a mí mismo para hacer esto, pero calculo es la función strftime
allí por una razón (y también hay una razón por la cual no puede soportar fechas anteriores a 1900). Necesito poder admitir las fechas anteriores a 1900. Solo usaría str
, pero hay demasiada variación. En otras palabras, puede o no tener microsegundos o puede tener o no una zona horaria. Hay alguna solución para esto?
Si hace la diferencia, estoy haciendo esto para poder escribir los datos en un archivo de texto y cargarlo en una base de datos utilizando Oracle SQL * Loader.
Básicamente terminé haciendo la respuesta de Alex Martelli. Aquí hay una aplicación más completa:
>>> from datetime import datetime
>>> d = datetime.now()
>>> d = d.replace(microsecond=0, tzinfo=None)
>>> str(d)
'2009-10-29 11:27:27'
La única diferencia es que str(d)
es equivalente a d.isoformat(' ')
.
Esto es básicamente lo que terminé haciendo. –