Pregunta Cómo obtener la hora actual en Python


¿Cuál es el módulo / método utilizado para obtener la hora actual?


1950
2018-01-06 04:54


origen


Respuestas:


Utilizar:

>>> import datetime
>>> datetime.datetime.now()
datetime(2009, 1, 6, 15, 8, 24, 78915)

>>> print(datetime.datetime.now())
2018-07-29 09:17:13.812189

Y justo a tiempo:

>>> datetime.datetime.time(datetime.datetime.now())
datetime.time(15, 8, 24, 78915)

>>> print(datetime.datetime.time(datetime.datetime.now()))
09:17:51.914526

Lo mismo, pero un poco más compacto:

>>> datetime.datetime.now().time()

Ver la documentación para más información.

Para guardar la escritura, puede importar datetime objeto de la datetime módulo:

>>> from datetime import datetime

A continuación, elimine el líder datetime. de todo lo anterior.


1991
2018-01-06 04:57



Puedes usar time.strftime():

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'

785
2018-01-06 04:59



Similar a La respuesta de Harley, pero usa el str() función para un formato rápido-n-sucio, ligeramente más humano legible:

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'

406
2018-05-04 00:56



>>> from datetime import datetime
>>> datetime.now().strftime('%Y-%m-%d %H:%M:%S')

Para este ejemplo, la salida será así: '2013-09-18 11:16:32'

Aquí está la lista de tiempo de trabajo.


367
2018-01-09 05:50



¿Cómo obtengo la hora actual en Python?

los time módulo

los time El módulo proporciona funciones que nos dicen el tiempo en "segundos desde la época", así como otras utilidades.

import time

Tiempo de la Época Unix

Este es el formato en el que debe obtener las marcas de tiempo para guardar en bases de datos. Es un número simple de coma flotante que se puede convertir a un número entero. También es bueno para la aritmética en segundos, ya que representa el número de segundos desde el 1 de enero de 1970 00:00:00, y es la luz de memoria relativa a las otras representaciones de tiempo que veremos a continuación:

>>> time.time()
1424233311.771502

Esta marca de tiempo no tiene en cuenta los segundos intercalares, por lo que no es lineal: los segundos intercalares se ignoran. Por lo tanto, si bien no es equivalente al estándar UTC internacional, está cerca y, por lo tanto, es bastante bueno para la mayoría de los casos de mantenimiento de registros.

Sin embargo, esto no es ideal para la programación humana. Si tiene un evento futuro que desea tener lugar en un determinado momento, querrá almacenar ese tiempo con una cadena que se puede analizar en un objeto datetime o un objeto datetime serializado (estos se describirán más adelante).

time.ctime

También puede representar la hora actual de la manera que prefiera su sistema operativo (lo que significa que puede cambiar cuando cambie las preferencias de su sistema, por lo que no confíe en que sea estándar en todos los sistemas, como he visto esperar) . Esto es típicamente fácil de usar, pero típicamente no da como resultado cadenas que uno puede ordenar cronológicamente:

>>> time.ctime()
'Tue Feb 17 23:21:56 2015'

Puede hidratar las marcas de tiempo en forma humana legible con ctime también:

>>> time.ctime(1424233311.771502)
'Tue Feb 17 23:21:51 2015'

Esta conversión tampoco es buena para el mantenimiento de registros (excepto en el texto que solo será analizado por humanos) y con el reconocimiento óptico de caracteres mejorado y la inteligencia artificial, creo que el número de estos casos disminuirá.

datetime módulo

los datetime módulo también es bastante útil aquí:

>>> import datetime

datetime.datetime.now

los datetime.now es un método de clase que devuelve la hora actual. Utiliza el time.localtime sin la información de la zona horaria (si no se proporciona, de lo contrario, consulte la zona horaria a continuación). Tiene una representación (que le permite recrear un objeto equivalente) repetida en el intérprete de comandos, pero cuando se imprime (o coacciona a un str), está en formato legible para humanos (y casi ISO), y el tipo lexicográfico es equivalente al tipo cronológico:

>>> datetime.datetime.now()
datetime.datetime(2015, 2, 17, 23, 43, 49, 94252)
>>> print(datetime.datetime.now())
2015-02-17 23:43:51.782461

datetime's utcnow

Puede obtener un objeto datetime en tiempo UTC, un estándar global, al hacer esto:

>>> datetime.datetime.utcnow()
datetime.datetime(2015, 2, 18, 4, 53, 28, 394163)
>>> print(datetime.datetime.utcnow())
2015-02-18 04:53:31.783988

UTC es un estándar de tiempo que es casi equivalente a la zona horaria GMT. (Si bien GMT y UTC no cambian durante el horario de verano, sus usuarios pueden cambiar a otras zonas horarias, como el horario de verano británico, durante el verano).

datetime timezone aware

Sin embargo, ninguno de los objetos datetime que hemos creado hasta ahora se puede convertir fácilmente a varias zonas horarias. Podemos resolver ese problema con el pytz módulo:

>>> import pytz
>>> then = datetime.datetime.now(pytz.utc)
>>> then
datetime.datetime(2015, 2, 18, 4, 55, 58, 753949, tzinfo=<UTC>)

Equivalentemente, en Python 3 tenemos el timezone clase con utc timezone instancia adjunta, que también hace que el objeto zona horaria sea consciente (pero para convertir a otra zona horaria sin el práctico pytz el módulo se deja como un ejercicio para el lector):

>>> datetime.datetime.now(datetime.timezone.utc)
datetime.datetime(2015, 2, 18, 22, 31, 56, 564191, tzinfo=datetime.timezone.utc)

Y vemos que podemos convertir fácilmente a zonas horarias del objeto utc original.

>>> print(then)
2015-02-18 04:55:58.753949+00:00
>>> print(then.astimezone(pytz.timezone('US/Eastern')))
2015-02-17 23:55:58.753949-05:00

También puede hacer que un objeto de fecha y hora sea consciente con el pytz zona horaria localize método, o reemplazando el atributo tzinfo (con replace, esto se hace a ciegas), pero estos son más los últimos recursos que las mejores prácticas:

>>> pytz.utc.localize(datetime.datetime.utcnow())
datetime.datetime(2015, 2, 18, 6, 6, 29, 32285, tzinfo=<UTC>)
>>> datetime.datetime.utcnow().replace(tzinfo=pytz.utc)
datetime.datetime(2015, 2, 18, 6, 9, 30, 728550, tzinfo=<UTC>)

los pytz módulo nos permite hacer que nuestro datetime objetos zona horaria consciente y convertir los tiempos a los cientos de zonas horarias disponibles en el pytz módulo.

Se podría serializar ostensiblemente este objeto para la hora UTC y almacenar ese en una base de datos, pero requeriría mucha más memoria y sería más propenso al error que simplemente almacenar el tiempo de la Época Unix, lo cual demostré primero.

Las otras formas de ver tiempos son mucho más propensas a errores, especialmente cuando se trata de datos que pueden provenir de diferentes zonas horarias. Desea que no haya confusión en cuanto a la zona horaria a la que se destinó una cadena o un objeto de fecha y hora serializado.

Si está mostrando la hora con Python para el usuario, ctime funciona bien, no en una mesa (normalmente no se clasifica bien), pero tal vez en un reloj. Sin embargo, yo personalmente recomiendo, cuando se trata de tiempo en Python, ya sea usando tiempo Unix, o un UTC consciente de zona horaria datetime objeto.


203
2018-02-18 05:08



Hacer

from time import time

t = time()
  • t - número de flotación, bueno para medir el intervalo de tiempo.

Hay alguna diferencia para las plataformas Unix y Windows.


112
2018-01-06 13:55



>>> from time import gmtime, strftime
>>> strftime("%a, %d %b %Y %X +0000", gmtime())
'Tue, 06 Jan 2009 04:54:56 +0000'

Eso genera el GMT actual en el formato especificado. También hay un método localtime ().

Esta página tiene mas detalles


83
2018-01-06 05:02