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]
En Python 3.6:
from datetime import datetime
datetime.datetime.now().isoformat('' '', ''seconds'')
''2017-01-11 14:41:33''
https://docs.python.org/3.6/library/datetime.html#datetime.datetime.isoformat
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