restar - Como obtener la hora actual en Python
obtener el dia de la semana en python (30)
¿Cómo obtengo la hora actual en Python?
El modulo de time
El módulo de 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 segundos, por lo que no es lineal: los segundos de los saltos 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 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 puede hidratar las marcas de tiempo en forma 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 el texto que solo serán analizados por humanos, y con el reconocimiento óptico de caracteres mejorado y la inteligencia artificial, creo que el número de estos casos disminuirá).
módulo de 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 time.localtime
sin la información de la zona horaria (si no se proporciona, de lo contrario, consulte la zona horaria que se indica a continuación). Tiene una representación (que le permitiría recrear un objeto equivalente) que se hizo eco en la cáscara, pero cuando se imprimió (o fue forzada a una str
), está en formato legible por el hombre (y casi ISO), y la clasificación lexicográfica 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
el utcnow
de utcnow
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. (Mientras 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 hora consciente
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 de timezone
con una instancia de 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 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 localize
zona horaria de pytz
, o reemplazando el atributo tzinfo (con replace
, esto se hace a ciegas), pero estos son más 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>)
El módulo pytz
nos permite hacer que nuestros objetos de datetime
y 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 el tiempo UTC y almacenarlo en una base de datos, pero requeriría mucha más memoria y sería más propenso a errores que simplemente almacenar el tiempo 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), pero quizás en un reloj. Sin embargo, personalmente recomiendo, cuando se trata de tiempo en Python, ya sea utilizando el tiempo Unix, o un objeto de datetime
UTC consciente de la zona horaria.
¿Cuál es el módulo / método utilizado para obtener la hora actual?
¿Por qué no preguntar al Observatorio Naval de los EE. UU. , 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 ...
De forma predeterminada, la función now()
devuelve la salida en el 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
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 del Péndulo , que parece hacer el tipo de cosas que intentó la flecha, excepto sin las fallas e insectos 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 un poco 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 hora lo que hicieron las solicitudes para HTTP. Vale la pena considerar, especialmente por su facilidad de uso y extensa documentación.
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 apropiados para obtener la fecha con el formato que desee (de la documentación "datetime" de Python here ).
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.
La forma más rápida es
>>> import time
>>> time.strftime("%Y%m%d")
''20130924''
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.
Primero importa el módulo datetime desde datetime
from datetime import datetime
Luego imprime 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, simplemente 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.
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''
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]
Puede utilizar el módulo de time
.
import time
print time.strftime("%d/%m/%Y")
>>> 06/02/2015
El uso de la capital Y
da el año completo, y el uso de y
daría el 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''
Puedes usar time.strftime()
:
>>> from time import gmtime, strftime
>>> strftime("%Y-%m-%d %H:%M:%S", gmtime())
''2009-01-05 22:14:39''
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 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)
Si necesita la hora actual como un objeto de time
:
>>> import datetime
>>> now = datetime.datetime.now()
>>> datetime.time(now.hour, now.minute, now.second)
datetime.time(11, 23, 44)
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))
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ás usando Pandas, entonces puedes usar la función pandas.to_datetime ():
import pandas as pd
str(pd.to_datetime(''now''))
O:
str(pd.to_datetime(''today''))
Similar a la respuesta de Harley , pero usa la función str()
para obtener un formato legible para los humanos, rápido y sucio:
>>> from datetime import datetime
>>> str(datetime.now())
''2011-05-03 17:45:35.177000''
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
Usando el time
,
import time
print(time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime()))
Salida:
2017-10-17 18:22:26
Todas son buenas sugerencias, pero me parece más fácil 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 buen formato de la hora local actual.
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
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 el 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()
Consulte la documentación para más información.
Para guardar la escritura, puede importar el objeto datetime
desde el módulo datetime
:
>>> from datetime import datetime
A continuación, elimine el datetime.
líder datetime.
de todo lo anterior.
.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''
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
>>> 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 .
>>> 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 page tiene más detalles.
>>> import datetime, time
>>> time = strftime("%H:%M:%S:%MS", time.localtime())
>>> print time
''00:20:58:20S''
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 llame al método split () que hará una lista de su cadena [''Wed'', ''Jan'', ''17'', ''16:56:45'', ''2018''] (el delimitador predeterminado es el espacio).
Los corchetes se utilizan para ''seleccionar'' el argumento deseado en la lista.
Uno debe llamar a una sola línea de código. Uno no debería llamarlos como lo hice yo, eso fue solo un ejemplo, porque en algunos casos obtendrás diferentes valores, casos raros pero no imposibles.
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.
import datetime
date_time = str(datetime.datetime.now())
date = date_time.split()[0]
time = date_time.split()[1]
fecha se imprimirá fecha y hora imprimirá hora.