Fecha y hora de Python
Fecha y hora de Python
En este artículo, aprenderá a manipular la fecha y la hora en Python con la ayuda de ejemplos.
Video:Python datetime - Trabajar con fechas y horas
Python tiene un módulo llamado datetime para trabajar con fechas y horas. Vamos a crear algunos programas simples relacionados con la fecha y la hora antes de profundizar.
Ejemplo 1:obtener fecha y hora actuales
import datetime
datetime_object = datetime.datetime.now()
print(datetime_object)
Cuando ejecute el programa, la salida será algo como:
2018-12-19 09:26:03.478039
Aquí, hemos importado datetime módulo usando import datetime
declaración.
Una de las clases definidas en el datetime
el módulo es datetime
clase. Luego usamos now()
método para crear un datetime
objeto que contiene la fecha y hora locales actuales.
Ejemplo 2:obtener la fecha actual
import datetime
date_object = datetime.date.today()
print(date_object)
Cuando ejecute el programa, la salida será algo como:
2018-12-19
En este programa, hemos usado today()
método definido en el date
clase para obtener un date
objeto que contiene la fecha local actual.
¿Qué hay dentro de datetime?
Podemos usar la función dir() para obtener una lista que contenga todos los atributos de un módulo.
import datetime
print(dir(datetime))
Cuando ejecute el programa, la salida será:
['MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', 'datetime', 'datetime_CAPI', 'time', 'timedelta', 'timezone', 'tzinfo']
Las clases comúnmente utilizadas en el módulo de fecha y hora son:
- clase de fecha
- Clase de tiempo
- Clase de fecha y hora
- Clase timedelta
clase datetime.date
Puede instanciar date
objetos del date
clase. Un objeto de fecha representa una fecha (año, mes y día).
Ejemplo 3:Objeto de fecha para representar una fecha
import datetime
d = datetime.date(2019, 4, 13)
print(d)
Cuando ejecute el programa, la salida será:
2019-04-13
Si te lo preguntas, date()
en el ejemplo anterior es un constructor del date
clase. El constructor toma tres argumentos:año, mes y día.
La variable a es un date
objeto.
Solo podemos importar date
clase del datetime
módulo. Así es como:
from datetime import date
a = date(2019, 4, 13)
print(a)
Ejemplo 4:obtener la fecha actual
Puedes crear un date
objeto que contiene la fecha actual usando un método de clase llamado today()
. Así es como:
from datetime import date
today = date.today()
print("Current date =", today)
Ejemplo 5:obtener la fecha de una marca de tiempo
También podemos crear date
objetos de una marca de tiempo. Una marca de tiempo de Unix es el número de segundos entre una fecha particular y el 1 de enero de 1970 en UTC. Puede convertir una marca de tiempo a la fecha usando fromtimestamp()
método.
from datetime import date
timestamp = date.fromtimestamp(1326244364)
print("Date =", timestamp)
Cuando ejecute el programa, la salida será:
Date = 2012-01-11
Ejemplo 6:Imprime el año, mes y día de hoy
Podemos obtener año, mes, día, día de la semana, etc. del objeto de fecha fácilmente. Así es como:
from datetime import date
# date object of today's date
today = date.today()
print("Current year:", today.year)
print("Current month:", today.month)
print("Current day:", today.day)
fechahora.hora
Un objeto de tiempo instanciado desde el time
class representa la hora local.
Ejemplo 7:Objeto de tiempo para representar el tiempo
from datetime import time
# time(hour = 0, minute = 0, second = 0)
a = time()
print("a =", a)
# time(hour, minute and second)
b = time(11, 34, 56)
print("b =", b)
# time(hour, minute and second)
c = time(hour = 11, minute = 34, second = 56)
print("c =", c)
# time(hour, minute, second, microsecond)
d = time(11, 34, 56, 234566)
print("d =", d)
Cuando ejecute el programa, la salida será:
a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11:34:56.234566
Ejemplo 8:Imprimir hora, minuto, segundo y microsegundo
Una vez que creas un time
objeto, puede imprimir fácilmente sus atributos como hora , minuto etc.
from datetime import time
a = time(11, 34, 56)
print("hour =", a.hour)
print("minute =", a.minute)
print("second =", a.second)
print("microsecond =", a.microsecond)
Cuando ejecute el ejemplo, el resultado será:
hour = 11 minute = 34 second = 56 microsecond = 0
Observe que no hemos pasado microsegundo argumento. Por lo tanto, su valor predeterminado 0
está impreso.
fechahora.fechahora
El datetime
módulo tiene una clase llamada dateclass
que puede contener información tanto de fecha y tiempo objetos.
Ejemplo 9:objeto de fecha y hora de Python
from datetime import datetime
#datetime(year, month, day)
a = datetime(2018, 11, 28)
print(a)
# datetime(year, month, day, hour, minute, second, microsecond)
b = datetime(2017, 11, 28, 23, 55, 59, 342380)
print(b)
Cuando ejecute el programa, la salida será:
2018-11-28 00:00:00 2017-11-28 23:55:59.342380
Los tres primeros argumentos año , mes y día en el datetime()
constructor son obligatorios.
Ejemplo 10:Imprimir año, mes, hora, minuto y marca de tiempo
from datetime import datetime
a = datetime(2017, 11, 28, 23, 55, 59, 342380)
print("year =", a.year)
print("month =", a.month)
print("hour =", a.hour)
print("minute =", a.minute)
print("timestamp =", a.timestamp())
Cuando ejecute el programa, la salida será:
year = 2017 month = 11 day = 28 hour = 23 minute = 55 timestamp = 1511913359.34238
fechahora.horadelta
Un timedelta
objeto representa la diferencia entre dos fechas u horas.
Ejemplo 11:Diferencia entre dos fechas y horas
from datetime import datetime, date
t1 = date(year = 2018, month = 7, day = 12)
t2 = date(year = 2017, month = 12, day = 23)
t3 = t1 - t2
print("t3 =", t3)
t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33)
t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13)
t6 = t4 - t5
print("t6 =", t6)
print("type of t3 =", type(t3))
print("type of t6 =", type(t6))
Cuando ejecute el programa, la salida será:
t3 = 201 days, 0:00:00 t6 = -333 days, 1:14:20 type of t3 = <class 'datetime.timedelta'> type of t6 = <class 'datetime.timedelta'>
Aviso, ambos t3 y t6 son de <class 'datetime.timedelta'>
tipo.
Ejemplo 12:Diferencia entre dos objetos timedelta
from datetime import timedelta
t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33)
t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54)
t3 = t1 - t2
print("t3 =", t3)
Cuando ejecute el programa, la salida será:
t3 = 14 days, 13:55:39
Aquí, hemos creado dos timedelta
objetos t1 y t2 , y su diferencia se imprime en la pantalla.
Ejemplo 13:Impresión de objeto timedelta negativo
from datetime import timedelta
t1 = timedelta(seconds = 33)
t2 = timedelta(seconds = 54)
t3 = t1 - t2
print("t3 =", t3)
print("t3 =", abs(t3))
Cuando ejecute el programa, la salida será:
t3 = -1 day, 23:59:39 t3 = 0:00:21
Ejemplo 14:Duración del tiempo en segundos
Puede obtener el número total de segundos en un objeto timedelta usando total_seconds()
método.
from datetime import timedelta
t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423)
print("total seconds =", t.total_seconds())
Cuando ejecute el programa, la salida será:
total seconds = 435633.233423
También puede encontrar la suma de dos fechas y horas usando +
operador. Además, puedes multiplicar y dividir un timedelta
objeto por enteros y flotantes.
Fecha y hora en formato Python
La forma en que se representan la fecha y la hora puede ser diferente en diferentes lugares, organizaciones, etc. Es más común usar mm/dd/yyyy
en los EE. UU., mientras que dd/mm/yyyy
es más común en el Reino Unido.
Python tiene strftime()
y strptime()
métodos para manejar esto.
Python strftime() - objeto de fecha y hora a cadena
El strftime()
el método se define en las clases date
, datetime
y time
. El método crea una cadena formateada a partir de un date
dado , datetime
o time
objeto.
Ejemplo 15:Dar formato a la fecha usando strftime()
from datetime import datetime
# current date and time
now = datetime.now()
t = now.strftime("%H:%M:%S")
print("time:", t)
s1 = now.strftime("%m/%d/%Y, %H:%M:%S")
# mm/dd/YY H:M:S format
print("s1:", s1)
s2 = now.strftime("%d/%m/%Y, %H:%M:%S")
# dd/mm/YY H:M:S format
print("s2:", s2)
Cuando ejecute el programa, la salida será algo como:
time: 04:34:52 s1: 12/26/2018, 04:34:52 s2: 26/12/2018, 04:34:52
Aquí, %Y
, %m
, %d
, %H
etc. son códigos de formato. El strftime()
El método toma uno o más códigos de formato y devuelve una cadena formateada basada en él.
En el programa anterior, t , s1 y s2 son cadenas.
%Y
- año [0001,..., 2018, 2019,..., 9999]%m
- mes [01, 02, ..., 11, 12]%d
- día [01, 02, ..., 30, 31]%H
- hora [00, 01, ..., 22, 23%M
- minuto [00, 01, ..., 58, 59]%S
- segundo [00, 01, ..., 58, 59]
Para obtener más información sobre strftime()
y códigos de formato, visite:Python strftime().
Python strptime() - cadena hasta la fecha y hora
El strptime()
método crea un datetime
objeto de una cadena determinada (que representa la fecha y la hora).
Ejemplo 16:strptime()
from datetime import datetime
date_string = "21 June, 2018"
print("date_string =", date_string)
date_object = datetime.strptime(date_string, "%d %B, %Y")
print("date_object =", date_object)
Cuando ejecute el programa, la salida será:
date_string = 21 June, 2018 date_object = 2018-06-21 00:00:00
El strptime()
El método toma dos argumentos:
- una cadena que representa la fecha y la hora
- código de formato equivalente al primer argumento
Por cierto, %d
, %B
y %Y
los códigos de formato se utilizan para day , mes (nombre completo) y año respectivamente.
Visite Python strptime() para obtener más información.
Manejo de la zona horaria en Python
Suponga que está trabajando en un proyecto y necesita mostrar la fecha y la hora en función de su zona horaria. En lugar de tratar de manejar la zona horaria usted mismo, le sugerimos que use un módulo pytZ de terceros.
from datetime import datetime
import pytz
local = datetime.now()
print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S"))
tz_NY = pytz.timezone('America/New_York')
datetime_NY = datetime.now(tz_NY)
print("NY:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S"))
tz_London = pytz.timezone('Europe/London')
datetime_London = datetime.now(tz_London)
print("London:", datetime_London.strftime("%m/%d/%Y, %H:%M:%S"))
Cuando ejecute el programa, la salida será algo como:
Local time: 2018-12-20 13:10:44.260462 America/New_York time: 2018-12-20 13:10:44.260462 Europe/London time: 2018-12-20 13:10:44.260462
Aquí, datetime_NY y datetime_Londres son objetos de fecha y hora que contienen la fecha y hora actuales de su zona horaria respectiva.
python