it-swarm-es.tech

Como obtener la hora actual en Python

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

2345
user46646

Utilizar:

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

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

Y justo el tiempo:

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

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

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

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

>>> from datetime import datetime

A continuación, elimine el datetime. inicial de todos los anteriores.

2475
Harley Holcombe

Puedes usar time.strftime() :

>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
'2009-01-05 22:14:39'
860
Sean James
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 strftime .

459
ParaMeterz

Similar a la respuesta de Harley , pero usa la función str() para obtener un formato legible para los usuarios, rápido, sucio y poco más sucio:

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

¿Cómo obtengo la hora actual en Python?

El módulo time

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

import time

Unix Epoch Time

Este es el formato en el que debe obtener las marcas de tiempo para guardar en bases de datos. Es un número de punto flotante simple que se puede convertir en un 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 a las 00:00:00, y es la luz de la 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 saltos de segundo, por lo que no es lineal, los segundos de salto se ignoran. Entonces, 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.

Esto no es ideal para la programación humana, sin embargo. Si tiene un evento futuro que desea que tenga lugar en un momento determinado, querrá almacenar ese tiempo con una cadena que se puede analizar en un objeto de fecha y hora o en un objeto de fecha y hora serializado (esto se describirá 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 cambia las preferencias de su sistema, así que no confíe en que esto sea estándar en todos los sistemas, como he visto otros que esperan) . Esto suele ser fácil de usar, pero normalmente no genera cadenas que se puedan clasificar cronológicamente:

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

También puedes hidratar las marcas de tiempo en forma legible para 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 el texto que solo será analizado por los humanos, y con el reconocimiento óptico de caracteres mejorado y la inteligencia artificial, creo que el número de estos casos disminuirá).

módulo datetime

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

>>> import datetime

datetime.datetime.now

El 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, vea la zona horaria más abajo). Tiene una representación (que le permitiría recrear un objeto equivalente) que se hizo eco en el Shell, pero cuando se imprimió (o se obligó a una str), está en formato legible por los humanos (y casi ISO), y el orden lexicográfico es equivalente a El 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

utcnow de datetime

Puede obtener un objeto de fecha y hora en hora 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 para el horario de verano, sus usuarios pueden cambiar a otras zonas horarias, como British Summer Time, durante el verano).

fecha hora 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 resolver ese problema con el módulo pytz:

>>> 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 clase timezone con una instancia utc timezone adjunta, lo que también hace que el objeto sea consciente de la zona horaria (pero para convertir a otra zona horaria sin el práctico módulo pytz se deja como ejercicio al 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 pytz timezone localize, o reemplazando el atributo tzinfo (con replace, esto se hace a ciegas), pero estos son más complejos 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 módulo pytz nos permite hacer que nuestros objetos datetime sean conscientes de la zona horaria y convertir los tiempos a los cientos de zonas horarias disponibles en el módulo pytz.

Aparentemente, se podría serializar este objeto para la hora UTC y almacenar esa en una base de datos, pero requeriría mucha más memoria y sería más propenso a errores que simplemente almacenar la hora de Unix Epoch, que demostré primero.

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 la zona horaria a la que se destinó una cadena o un objeto de fecha y hora serializados.

Si está mostrando la hora con Python para el usuario, ctime funciona bien, no en una tabla (normalmente no se clasifica bien), sino quizás en un reloj. Sin embargo, personalmente recomiendo, cuando se trata de tiempo en Python, ya sea utilizando el tiempo de Unix, o un objeto UTC datetime UTC en zona horaria.

282
Aaron Hall

Hacer

from time import time

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

Hay alguna diferencia para las plataformas Unix y Windows.

118
maxp
>>> 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 más detalles.

87
Vijay Dev

Todas son buenas sugerencias, pero me parece más fácil usar ctime() a mí mismo:

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 buen formato de la hora local actual.

53
Ethereal

Simple y fácil:

Usando el módulo datetime,

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

Salida:

2017-10-17 23:48:55

O

Utilizando time,

import time
print(time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()))

Salida:

2017-10-17 18:22:26
46
Ani Menon

Si necesita la hora actual como objeto time:

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

La forma más rápida es

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

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

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

¿Por qué no preguntar al Observatorio Naval de los Estados Unidos , el cronometrador oficial de la Marina 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 D.C. (como yo) la latencia podría no ser tan mala ...

28
C8H10N4O2

Esto es lo que terminé yendo con:

>>>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 adecuados para obtener la fecha con el formato que desee (de la documentación "datetime" de Python aquí ).

strftime format code table

19
Kristen G.

Usando Pandas para obtener la hora actual, como para superar el 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)

Salida:

2017-09-22 12:44:56.092642
2017-09-22
2017
9
22
12
44
56
92693
19
prudhvi Indana
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

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

15
theBuzzyCoder

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 DST ("retroceder"). 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 compatible con la zona horaria que tiene la información correspondiente de la zona horaria adjunta (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
13
jfs

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

import datetime

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

La salida se ve a continuación:

2018-03-01 17:03:46.759624
12
Madhusudhan R

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

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

Solo para la fecha:

str(np.datetime64('today'))

O, si ya está utilizando Pandas, puede usar la función pandas.to_datetime ():

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

O:

str(pd.to_datetime('today'))
12
durjoy

Pruebe el módulo de flecha desde 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 la esencia.

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

Puedes usar el módulo time.

import time
print time.strftime("%d/%m/%Y")

>>> 06/02/2015

El uso de la capital Y da el año completo, y usar y daría 06/02/15.

También puedes utilizar para dar un tiempo más largo.

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

Quiero sacar el tiempo con 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 quiero solo 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)
11
y.selivonchyk
>>> import datetime, time
>>> time = strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
'00:20:58:20S'
11
user2030113

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

Por ejemplo, la respuesta a la pregunta original:

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

Hay muchos estándares que requieren direccionamiento, incluidos múltiples RFC e ISO, para preocuparse. Alguna vez mezclarlos; No se preocupe, eche un vistazo a dir(pendulum.constants) Sin embargo, hay algo más que los formatos RFC e ISO.

Cuando decimos local, ¿a qué nos referimos? Bueno me refiero a

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

Presumiblemente la mayoría del resto de ustedes quiere decir en otro lugar.

Y sigue así. Larga historia corta: Pendulum intenta hacer para la fecha y la hora lo que hicieron las solicitudes para HTTP. Vale la pena considerarlo, especialmente por su facilidad de uso y extensa documentación.

10
Ben

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))
8
motagirl2

Lo siguiente es lo que uso para obtener el tiempo sin tener que formatear. A algunas personas no les gusta el método de división, pero es útil aquí:

from time import ctime
print ctime().split()[3]

Se imprimirá en formato HH: MM: SS.

6
Amro elaswar

Como nadie lo ha mencionado todavía, y esto es algo que encontré recientemente ... el método fromutc () de zona horaria de pytz combinado con utcnow () de datetime es la mejor manera que he encontrado para obtener una hora (y fecha) actual ú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 desea es el momento, puede obtener eso con local_time.time().

6
kungphu

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 obtener las horas, minutos, segundos y milisegundos para fusionar más tarde, puede usar estas funciones:

Hora:

def gethour():
        from datetime import datetime
        return 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 return (str(datetime.now())).split('.')[1]
6
Richie Bendall
import datetime
date_time = str(datetime.datetime.now()).split()
date,time = date_time

fecha imprimirá fecha y hora imprimirá hora.

6
Abhijeet Deshani
from time import ctime

// Day {Mon,Tue,..}
print ctime().split()[0]
// Month {Jan, Feb,..}
print ctime().split()[1]
// Date {1,2,..}
print ctime().split()[2]
// HH:MM:SS
print ctime().split()[3]
// Year {2018,..}
print ctime().split()[4]

Cuando llame a ctime (), se convertirán los segundos en una cadena en formato 'Día Mes Fecha HH: MM: SS Año' (por ejemplo: 'Mié. 17 de enero 16:53:22 2018'), luego se llama método split () que hará una lista de su cadena ['Wed', 'Jan', '17', '16:56:45', '2018'] (el delimitador predeterminado es espacio).

Los corchetes se utilizan para 'seleccionar' el argumento deseado en la lista.

Uno debe llamar a una sola línea de código. No deberíamos llamarlos como lo hice yo, eso fue solo un ejemplo, porque en algunos casos obtendrás diferentes valores, casos raros pero no imposibles.

3
Bojan Petrovic

Esto es tan simple. Tratar:

    import datetime
    date_time = str(datetime.datetime.now())
    date = date_time.split()[0]
    time = date_time.split()[1]
2
Sachin Verma
get current date time attributes:


import datetime

currentDT = datetime.datetime.now()

print ("Current Year is: %d" % currentDT.year)
print ("Current Month is: %d" % currentDT.month)
print ("Current Day is: %d" % currentDT.day)
print ("Current Hour is: %d" % currentDT.hour)
print ("Current Minute is: %d" % currentDT.minute)
print ("Current Second is: %d" % currentDT.second)
print ("Current Microsecond is: %d" % currentDT.microsecond)


#!/usr/bin/python
import time;

ticks = time.time()
print "Number of ticks since "12:00am, Jan 1, 1970":", ticks
2
Ram Prajapati

Primero importa el módulo datetime desde datetime

from datetime import datetime

Luego imprima la hora actual como 'aaaa-mm-dd hh: mm: ss'

print(str(datetime.now())

Para obtener solo el tiempo en la forma 'hh: mm: ss' donde ss representa el número completo de segundos más la fracción de segundos transcurridos, solo haga;

print(str(datetime.now()[11:])

La conversión de datetime.now () en una cadena produce una respuesta que está en el formato que se siente como las fechas y horas habituales a las que estamos acostumbrados.

2
Samuel Nde

Esta pregunta es para Python, pero como Django es uno de los frameworks más utilizados para Python, es importante tener en cuenta que si está utilizando Django, siempre puede usar timezone.now() en lugar de datetime.datetime.now(). El primero es la "zona horaria" mientras que el segundo no lo es.

Consulte este SO conteste y el Django doc para obtener más información y los fundamentos de timezone.now().

from Django.utils import timezone

now = timezone.now()
0
Anupam