yyyy from example create python datetime datetime-format

from - Python datetime a cadena sin componente de microsegundos



python strftime (9)

Estoy agregando cadenas de tiempo UTC a las respuestas de la API de Bitbucket que actualmente solo contienen cadenas de tiempo de Amsterdam (!). Para 2011-11-03 11:07:04 coherencia con las cadenas de tiempo UTC devueltas en otro lugar, el formato deseado es 2011-11-03 11:07:04 (seguido de +00:00 , pero eso no es pertinente).

¿Cuál es la mejor manera de crear una cadena de este tipo ( sin un componente de microsegundos) desde una instancia de datetime y datetime con un componente de microsegundos?

>>> import datetime >>> print unicode(datetime.datetime.now()) 2011-11-03 11:13:39.278026

Agregaré la mejor opción que se me haya ocurrido como una posible respuesta, pero puede haber una solución más elegante.

Edición: debo mencionar que no estoy imprimiendo la hora actual; usé datetime.now para proporcionar un ejemplo rápido. Por lo tanto, la solución no debe asumir que las instancias de datetime que reciba incluirán componentes de microsegundos.


desde datetime importar datetime
ahora = datetime.now (). strftime ("% Y-% m-% d_% H:% M:% S.% f")


Así es como lo hago. Formato ISO:

import datetime datetime.datetime.now().replace(microsecond=0).isoformat() # Returns: ''2017-01-23T14:58:07''

Puede reemplazar la ''T'' si no desea el formato ISO:

datetime.datetime.now().replace(microsecond=0).isoformat('' '') # Returns: ''2017-01-23 15:05:27''


Como no todas las instancias de datetime.datetime tienen un componente de microsegundos (es decir, cuando es cero), puede particionar la cadena en un "." y toma solo el primer elemento, que siempre funcionará:

unicode(datetime.datetime.now()).partition(''.'')[0]



Mantén los primeros 19 caracteres que quisiste a través de rebanar:

>>> str(datetime.datetime.now())[:19] ''2011-11-03 14:37:50''


Otra opción más:

>>> import time >>> time.strftime("%Y-%m-%d %H:%M:%S") ''2011-11-03 11:31:28''

De forma predeterminada, utiliza la hora local. Si necesita UTC, puede usar lo siguiente:

>>> time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()) ''2011-11-03 18:32:20''


Podemos intentar algo como abajo

import datetime date_generated = datetime.datetime.now() date_generated.replace(microsecond=0).isoformat('' '').partition(''+'')[0]


>>> datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") ''2011-11-03 18:21:26''


>>> import datetime >>> now = datetime.datetime.now() >>> print unicode(now.replace(microsecond=0)) 2011-11-03 11:19:07