Cómo obtener la hora actual en Python

3341

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

3
  • 37
    tenga en cuenta que las respuestas más votadas son para timezonoe-naive datetime, mientras que vemos que en el entorno de producción cada vez más servicios en todo el mundo están conectados entre sí y el datetime con reconocimiento de zona horaria se convierte en el estándar requerido 29/04/20 a las 17:12
  • 1
    también, para django, consulte aquí para conocer la zona horaria
    Anupam
    19 de septiembre de 2020 a las 6:42
  • 2
    Este es un punto muy válido de @ SławomirLenart y aquí hay un tutorial rápido que muestra varias formas de obtener la hora actual según la zona horaria 14 de agosto a las 14:26
3464

Usar:

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

>>> print(datetime.datetime.now())
2009-01-06 15:08:24.789150

Y justo el tiempo:

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

>>> print(datetime.datetime.now().time())
15:08:24.789150

Consulte la documentación para obtener más información.

Para evitar escribir, puede importar el datetimeobjeto desde el datetimemódulo:

>>> from datetime import datetime

Luego, elimine el líder datetime.de todos los anteriores.

7
  • 44
    Sería bueno si esta respuesta cubriera zonas horarias (tal vez UTC como ejemplo) y tal vez comience con time.time (). 1 oct 2018 a las 21:41
  • 10
    @Toskan, el formato no era parte de la pregunta, por lo que no debería ser parte de la respuesta. Ya se proporciona un enlace a más documentación del módulo que contiene cosas como formatear. 18/10/19 a las 7:04
  • ¿En qué versión de Python se dio la respuesta original? Simplemente escribir datetime.datetime.now()en mi consola interactiva Python 2.7 (IronPython aún no se ha actualizado) me da el mismo comportamiento que el ejemplo más reciente que se usa print()en la respuesta. No he replicado con éxito lo que muestra la respuesta original (datetime.datetime (2009, 1, 6, 15, 8, 24, 78915)). (No es que realmente quiera, se prefiere el comportamiento print (), pero tengo curiosidad). 29/10/19 a las 15:04
  • @BobVicktor: Python 2.7, 3.7 y 3.8 dan el mismo comportamiento para mí, no estoy seguro de lo que estás viendo. 31 oct 2019 a las 20:15
  • @HarleyHolcombe Hmm ... ¿tal vez es una cosa de IronPython? Cuando escribo datetime.now()solo, lo imprime de la misma manera que muestra su respuesta print(datetime.now())... 1 de nov. De 2019 a las 5:58
1061

Puede utilizar time.strftime():

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'
6
  • 55
    ¿Es esto mejor / peor que la respuesta de @ ParaMeterz a continuación? ¿Por qué deberíamos utilizar el timemódulo frente al datetimemódulo?
    Nathan
    29/04/18 a las 16:17
  • 4
    No devuelve la hora actual de mi computadora.
    Saeed
    29/10/18 a las 11:51
  • 11
    Esta es la hora UTC, diferente del módulo de fecha y hora
    Voyager
    12/03/19 a las 8:11
  • 24
    @Saeed: use la función en localtime()lugar de gmtime()para obtener su hora local. 3/07/19 a las 11:33
  • 4
    Ver @frank pregunta relacionada en datetimecontra time. 30 de septiembre de 2019 a las 4:32
721
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 strftimedirectivas .

0
486

Similar a la respuesta de Harley , pero use la str()función para un formato rápido y sucio, un poco más legible por humanos:

>>> from datetime import datetime
>>> str(datetime.now())
'2011-05-03 17:45:35.177000'
6
  • 3
    Irrelevante; el paso "str" ​​no está dentro del alcance de la pregunta
    pppery
    11/04/19 a las 21:06
  • 10
    @pppery Tampoco dice la operación que no se trata de obtener una cadena de tiempo. El operador no dice en absoluto lo que quieren hacer con el tiempo, entonces, ¿por qué es malo mostrar cómo convertirlo en una cadena? La mayoría de las respuestas hablan de obtener una cadena de la época, por lo que parece ser un caso de uso común, entonces, ¿por qué destacar la respuesta de Ray? ¿De qué sirve simplemente conseguir el tiempo sin saber hacer nada con él? Puede imprimirlo o hacer cálculos matemáticos en él, y solo un par de las respuestas muestran cómo hacer cálculos matemáticos, por lo que creo que imprimir / obtener una cadena es un uso común. ;-) (Sé que es lo que vine a buscar.) 29/10/19 a las 15:21
  • 6
    El hecho de que esta respuesta tenga más de 440 votos a favor sugiere que la adición menor del método de cadena fue útil para mucha gente.
    John
    10 de ene. De 2020 a las 20:09
  • 3
    El hecho de que 440 personas buscaran contenido que no es una respuesta real a la pregunta no hace que ese contenido sea una respuesta a la pregunta.
    pppery
    21 feb.20 a las 4:55
  • 1
    @pppery El hecho de que es otra forma de responder la pregunta lo que lo hace RELEVANTE para otras personas que tengan una pregunta similar a esta pregunta. Así que no hay nada de malo en esto :) 31/12/20 a las 15:20
435

How do I get the current time in Python?

El timemodulo

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

import time

Época de Unix

Este es el formato en el que debe obtener las marcas de tiempo para guardar en las bases de datos. Es un número de punto flotante simple que se puede convertir en 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 luz de memoria en relación con las otras representaciones del 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. Entonces, si bien no es equivalente al estándar internacional UTC, 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 que tenga lugar en un momento determinado, querrá almacenar ese tiempo con una cadena que se pueda analizar en un datetimeobjeto o un datetimeobjeto serializado (estos se describirán más adelante).

time.ctime

También puede representar la hora actual en la forma que prefiera su sistema operativo (lo que significa que puede cambiar cuando cambia las preferencias de su sistema, así que no confíe en que esto sea estándar en todos los sistemas, como he visto que otros esperan) . Esto suele ser fácil de usar, pero no suele dar como resultado cadenas que se puedan ordenar cronológicamente:

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

También puede hidratar las marcas de tiempo en un formato legible por humanos con ctime:

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

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

datetime módulo

El datetimemódulo también es bastante útil aquí:

>>> import datetime

datetime.datetime.now

El datetime.nowes un método de clase que devuelve la hora actual. Utiliza el time.localtimesin 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 permitiría recrear un objeto equivalente) que se repite en el caparazón, pero cuando se imprime (o se coacciona a str), está en formato legible por humanos (y casi ISO), y el tipo lexicográfico es equivalente al orden 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

fecha y hora utcnow

Puede obtener un objeto de fecha y hora en hora UTC, un estándar global, haciendo 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. (Aunque GMT y UTC no cambian para el horario de verano, sus usuarios pueden cambiar a otras zonas horarias, como el horario de verano británico, durante el verano).

Fecha y hora consciente de la zona horaria

Sin embargo, ninguno de los objetos de fecha y hora que hemos creado hasta ahora se puede convertir fácilmente a varias zonas horarias. Podemos solucionar ese problema con el pytzmódulo:

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

De manera equivalente, en Python 3 tenemos la timezoneclase con una timezoneinstancia de utc adjunta, que también hace que el objeto sea consciente de la zona horaria (pero convertir a otra zona horaria sin el pytzmódulo útil se deja como 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 desde el 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 ingenuo sea consciente con el método de pytzzona horaria localize, o reemplazando el atributo tzinfo (con replace, esto se hace a ciegas), pero estos son los últimos recursos más 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>)

El pytzmódulo nos permite hacer que nuestros datetimeobjetos sean conscientes de la zona horaria y convertir las horas a los cientos de zonas horarias disponibles en el pytzmódulo.

Una ostensiblemente podría serializar este objeto para la hora UTC y la tienda que en una base de datos, pero requeriría mucho más memoria y ser más propensos a errores que simplemente almacenar la hora Epoch Unix, que demostró por primera vez.

Las otras formas de ver los 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 qué zona horaria está destinada a una cadena o un objeto de fecha y hora serializado.

Si está mostrando la hora con Python para el usuario, ctimefunciona bien, no en una tabla (normalmente no se ordena bien), pero quizás en un reloj. Sin embargo, personalmente recomiendo, cuando se trata de la hora en Python, ya sea usando la hora Unix o un datetimeobjeto UTC consciente de la zona horaria .

2
  • Creo que todos pueden estar de acuerdo en que ctimetiene que ser la forma más extraña de formatear una fecha y hora. Día de la semana y mes abreviado, día del mes, 24 horas h: m: s, y luego un año de cuatro dígitos. Los nerds a los que les gusta ordenar cadenas de citas, estadounidenses, europeos ... todos, sí, todos, pueden encontrar al menos dos cosas que los irritan en ese formato. Aunque lo usaré porque es super fácil. 6 de septiembre de 2020 a las 3:32
  • Como dije anteriormente con respecto a ctime: "También puede representar la hora actual de la forma que prefiera su sistema operativo (lo que significa que puede cambiar cuando cambia las preferencias de su sistema, así que no confíe en que esto sea estándar en todos los sistemas, ya que He visto que otros esperan). Esto suele ser fácil de usar, pero no suele dar como resultado cadenas que se puedan ordenar cronológicamente: " 6 de septiembre de 2020 a las 5:16
142

Hacer

from time import time

t = time()
  • t - número de flotación, bueno para la medición del intervalo de tiempo.

Existe alguna diferencia para las plataformas Unix y Windows.

1
  • Mi resultado en Windows 10 Home fue 1576095264.2682993; para Windows, esto podría dar el tiempo en segundos.
    hooman
    11/12/19 a las 20:16
110
>>> 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 localtime()método.

Esta página tiene más detalles.

0
76

Las respuestas anteriores son todas buenas sugerencias, pero las encuentro más fáciles de usar ctime():

In [2]: from time import ctime
In [3]: ctime()
Out[3]: 'Thu Oct 31 11:40:53 2013'

Esto proporciona una representación de cadena con un formato agradable de la hora local actual.

1
  • El OP preguntó cómo obtener la hora, no cómo mostrarla. 25 de mayo de 2020 a las 17:35
69

La forma más rápida es:

>>> import time
>>> time.strftime("%Y%m%d")
'20130924'
58

Si necesita la hora actual como timeobjeto:

>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)
0
42

.isoformat() está en la documentación, pero aún no aquí (esto es muy similar a la respuesta de @Ray Vega):

>>> import datetime
>>> datetime.datetime.now().isoformat()
'2013-06-24T20:35:55.982000'
0
40

¿Por qué no preguntar al Observatorio Naval de los Estados Unidos, el cronometrador oficial de la Armada de los Estados Unidos?

import requests
from lxml import html

page = requests.get('http://tycho.usno.navy.mil/cgi-bin/timer.pl')
tree = html.fromstring(page.content)
print(tree.xpath('//html//body//h3//pre/text()')[1])

Si vives en el área de DC (como yo), la latencia podría no ser tan mala ...

2
  • 21
    @ C8H10N4O2 Si bien tiene razón en que las otras respuestas asumen que su computadora ya sabe la hora correcta, esta respuesta asume que la computadora tiene una conexión a Internet, que está en los EE. UU. Y que nunca eliminarán ese archivo / alterar el enlace. Muchas más suposiciones en esta respuesta de las aceptadas. Aún así, inteligente 28/10/2016 a las 15:01
  • ¡Excelente tener otra fuente de tiempo que el reloj incorporado! Incluso una buena alternativa a la opción más lógica de NTP.
    Roland
    27 abr a las 9:42
37

Puedes usar el timemódulo:

>>> import time
>>> print(time.strftime("%d/%m/%Y"))
06/02/2015

El uso del capital Yda el año completo y el uso ydaría 06/02/15.

También puede usar el siguiente código para dar un tiempo más largo:

>>> time.strftime("%a, %d %b %Y %H:%M:%S")
'Fri, 06 Feb 2015 17:45:09'
0
36

El uso de pandas para obtener la hora actual, una especie de exageración del problema en cuestión:

import pandas as pd
print(pd.datetime.now())
print(pd.datetime.now().date())
print(pd.datetime.now().year)
print(pd.datetime.now().month)
print(pd.datetime.now().day)
print(pd.datetime.now().hour)
print(pd.datetime.now().minute)
print(pd.datetime.now().second)
print(pd.datetime.now().microsecond)

Producción:

2017-09-22 12:44:56.092642
2017-09-22
2017
9
22
12
44
56
92693
1
  • Este método quedará obsoleto en futuras versiones de pandas. En su lugar, utilice el módulo de fecha y hora.
    bfree67
    29 de septiembre de 2020 a las 3:12
29

Esto es con lo que terminé yendo:

>>>from time import strftime
>>>strftime("%m/%d/%Y %H:%M")
01/09/2015 13:11

Además, esta tabla es una referencia necesaria para elegir los códigos de formato apropiados para que la fecha tenga el formato que desee (de la documentación de Python "datetime" aquí ).

tabla de códigos de formato strftime

3
  • 2
    strftime(time_format)devuelve la hora local actual como una cadena que corresponde a la dada time_format. Nota: time.strftime()y datetime.strftime()admite diferentes conjuntos de directivas, por ejemplo, %zno es compatible time.strftime()con Python 2 .
    jfs
    9 de enero de 2015 a las 23:36
  • 1
    ¿Es una mejor práctica usar datetime en lugar de time? 15/01/15 a las 20:09
  • 2
    Muchas timefunciones de módulo son envoltorios delgados alrededor de las funciones C correspondientes. datetimees un nivel superior y suele ser más portátil.
    jfs
    15/01/15 a las 20:19
29

si ya está usando numpy, directamente puede usar la función numpy.datetime64 ().

import numpy as np
str(np.datetime64('now'))

solo por fecha:

str(np.datetime64('today'))

o, si ya está usando pandas, puede usar la función pandas.to_datetime ()

import pandas as pd
str(pd.to_datetime('now'))

o,

str(pd.to_datetime('today'))
0
25

datetime.now()devuelve la hora actual como un objeto de fecha y hora ingenuo que representa la hora en la zona horaria local. Ese valor puede ser ambiguo, por ejemplo, durante las transiciones de DST ("retroceso"). Para evitar la ambigüedad, se debe utilizar la zona horaria UTC:

from datetime import datetime

utc_time = datetime.utcnow()
print(utc_time) # -> 2014-12-22 22:48:59.916417

O un objeto que tenga en cuenta la zona horaria que tenga adjunta la información de la zona horaria correspondiente (Python 3.2+):

from datetime import datetime, timezone

now = datetime.now(timezone.utc).astimezone()
print(now) # -> 2014-12-23 01:49:25.837541+03:00
3
  • Para su información, no se recomienda usarlo datetime.utcnow()para representar la hora actual en UTC, ya que aún devuelve un objeto de fecha y hora 'ingenuo'; en su lugar, se recomienda usarlo datetime.now(timezone.utc)ya que devuelve un objeto de fecha y hora 'consciente'. Consulte los documentos de Python para obtener más detalles: docs.python.org/3/library/…
    Seth
    14 de junio a las 18:35
  • @Seth nota que la solución Python 3.2+ timezone.utcya usa . Quizás, ahora que Python 2.7 está en EOL, la fecha y hora ingenua se puede eliminar
    jfs
    15 de junio a las 18:42
  • Ah, no me di cuenta de que estaba ahí únicamente por compatibilidad con Python 2.7, ¿quizás eso debería aclararse en la publicación? Al menos para mí, parecía que esta publicación implicaba que tanto los métodos ingenuos como los conscientes eran (todavía) formas igualmente aceptables de obtener la hora UTC, por lo que señalé que eso no es lo que dice la (última) documentación de Python.
    Seth
    18 de junio a las 17:45
22
import datetime
date_time = datetime.datetime.now()

date = date_time.date()  # Gives the date
time = date_time.time()  # Gives the time

print date.year, date.month, date.day
print time.hour, time.minute, time.second, time.microsecond

Do dir(date)o cualquier variable, incluido el paquete. Puede obtener todos los atributos y métodos asociados con la variable.

1
  • @snofty y @ user1016274, si import datetimeentonces es datetime.datetime.now()\ n si from datetime import datetimeentonces esdatetime.now() 21 de abril de 2017 a las 4:44
19
>>> import datetime, time
>>> time = time.strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:21:38:20S'
3
  • Creo que quieres decir "datetime.now (). Strftime (...)"
    hlin117
    26/10/2014 a las 20:46
  • sí, se puede hacer como dijiste. "datetime.datetime.now (). strftime ("% H:% M:% S:% MS ")" 4 nov 14 a las 10:02
  • 4
    % MS no te da milisegundos !!
    ZF007
    13/06/19 a las 20:23
19

Esta pregunta no necesita una nueva respuesta solo por el simple hecho de hacerlo ... un juguete / módulo nuevo y brillante, sin embargo, es suficiente justificación. Esa es la biblioteca de Péndulo , que parece hacer el tipo de cosas que intentó Arrow, excepto sin los defectos y errores inherentes que acosan a Arrow.

Por ejemplo, la respuesta a la pregunta original:

>>> import pendulum
>>> print(pendulum.now())
2018-08-14T05:29:28.315802+10:00
>>> print(pendulum.now('utc'))
2018-08-13T19:29:35.051023+00:00

Hay muchos estándares que deben abordarse, incluidos varios RFC e ISO, de los que preocuparse. Alguna vez los confundiste; Sin dir(pendulum.constants)embargo, no se preocupe, eche un vistazo a Hay algo más que formatos RFC e ISO.

Cuando decimos local, ¿a qué nos referimos? Bueno, quiero decir:

>>> print(pendulum.now().timezone_name)
Australia/Melbourne
>>>

Presumiblemente, la mayoría de ustedes se refieren a otra parte.

Y así sigue. En pocas palabras: Péndulo intenta hacer para la fecha y la hora lo que hicieron las solicitudes para HTTP. Vale la pena considerarlo, particularmente por su facilidad de uso y su extensa documentación.

18

De forma predeterminada, la now()función devuelve la salida en el YYYY-MM-DD HH:MM:SS:MSformato. Utilice el siguiente script de muestra para obtener la fecha y hora actuales en un script de Python e imprimir los resultados en la pantalla. Cree un archivo getDateTime1.pycon el contenido a continuación.

import datetime

currentDT = datetime.datetime.now()
print (str(currentDT))

La salida se parece a la siguiente:

2018-03-01 17:03:46.759624
16

Pruebe el módulo de flechas de http://crsmithdev.com/arrow/ :

import arrow
arrow.now()

O la versión UTC:

arrow.utcnow()

Para cambiar su salida, agregue .format ():

arrow.utcnow().format('YYYY-MM-DD HH:mm:ss ZZ')

Para una zona horaria específica:

arrow.now('US/Pacific')

Hace una hora:

arrow.utcnow().replace(hours=-1)

O si quieres lo esencial.

arrow.get('2013-05-11T21:23:58.970460+00:00').humanize()
>>> '2 years ago'
1
16

Hora actual de una zona horaria

from datetime import datetime
import pytz

tz_NY = pytz.timezone('America/New_York') 
datetime_NY = datetime.now(tz_NY)
print("NY time:", datetime_NY.strftime("%H:%M:%S"))

tz_London = pytz.timezone('Europe/London')
datetime_London = datetime.now(tz_London)
print("London time:", datetime_London.strftime("%H:%M:%S"))

tz_India = pytz.timezone('Asia/India')
datetime_India = datetime.now(tz_India)
print("India time:", datetime_India.strftime("%H:%M:%S"))

#list timezones
pytz.all_timezones
14

Si solo desea la marca de tiempo actual en ms (por ejemplo, para medir el tiempo de ejecución), también puede usar el módulo "timeit":

import timeit
start_time = timeit.default_timer()
do_stuff_you_want_to_measure()
end_time = timeit.default_timer()
print("Elapsed time: {}".format(end_time - start_time))
14

Puede usar esta función para obtener la hora (desafortunadamente no dice AM o PM):

def gettime():
    from datetime import datetime
    return ((str(datetime.now())).split(' ')[1]).split('.')[0]

Para que las horas, los minutos, los segundos y los milisegundos se fusionen más tarde, puede utilizar estas funciones:

Hora:

def gethour():
    from datetime import datetime
    return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[0]

Minuto:

def getminute():
    from datetime import datetime
    return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[1]

Segundo:

def getsecond():
    from datetime import datetime
    return (((str(datetime.now())).split(' ')[1]).split('.')[0]).split(':')[2]

Milisegundo:

def getmillisecond():
    from datetime import datetime
    return (str(datetime.now())).split('.')[1]
14

Puedes probar lo siguiente

import datetime

now = datetime.datetime.now()
print(now)

o

import datetime

now = datetime.datetime.now()
print(now.strftime("%Y-%b-%d, %A %I:%M:%S"))
14

Para obtener exactamente 3 puntos decimales por milisegundos, 11:34:23.751ejecute esto:

def get_time_str(decimal_points=3):
        return time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 10**decimal_points)

Más contexto:

Quiero obtener el tiempo en milisegundos. Una forma sencilla de conseguirlos:

import time, datetime

print(datetime.datetime.now().time())                         # 11:20:08.272239

# Or in a more complicated way
print(datetime.datetime.now().time().isoformat())             # 11:20:08.272239
print(datetime.datetime.now().time().strftime('%H:%M:%S.%f')) # 11:20:08.272239

# But do not use this:
print(time.strftime("%H:%M:%S.%f", time.localtime()), str)    # 11:20:08.%f

Pero solo quiero milisegundos , ¿verdad? La forma más corta de conseguirlos:

import time

time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 1000)
# 11:34:23.751

Agregue o elimine ceros de la última multiplicación para ajustar el número de puntos decimales, o simplemente:

def get_time_str(decimal_points=3):
    return time.strftime("%H:%M:%S", time.localtime()) + '.%d' % (time.time() % 1 * 10**decimal_points)
1
  • 1
    Esto funciona en Python 3: time.strftime ("% H:% M:% S", time.localtime ()) + '. {}'. Format (int (time.time ()% 1 * 1000)) 27 de septiembre de 2016 a las 14:41
12

Porque nadie lo ha mencionado todavía, y esto es algo con lo que me encontré recientemente ... el método fromutc () de una zona horaria de pytz combinado con el utcnow () de datetime es la mejor manera que he encontrado para obtener una hora actual (y fecha) útil en cualquier zona horaria.

from datetime import datetime

import pytz


JST = pytz.timezone("Asia/Tokyo")


local_time = JST.fromutc(datetime.utcnow())

Si todo lo que quieres es tiempo, puedes conseguirlo local_time.time().

2
  • Sorprendentemente, todas las respuestas anteriores no mencionaron las zonas horarias. también debe incluir strftime para obtener el formato que desea. 30/08/18 a las 17:27
  • 1
    No incluí eso porque ya se ha cubierto en otras respuestas (y el formato de visualización no era parte de la pregunta).
    kungphu
    31/08/18 a las 21:59
12
import datetime

todays_date = datetime.date.today()
print(todays_date)
>>> 2019-10-12

# adding strftime will remove the seconds
current_time = datetime.datetime.now().strftime('%H:%M')
print(current_time)
>>> 23:38
11

Puede hacerlo usando ctime ():

from time import time, ctime
t = time()
ctime(t)

producción:

Sat Sep 14 21:27:08 2019

Estos resultados son diferentes porque la marca de tiempo devuelta por ctime()depende de su ubicación geográfica.