Modulo datetime - trabajar con funciones relacionadas con la fecha y hora.
Creando objetos date.
El módulo datetime nos proporciona clases para trabajar con la fecha y hora.
¿Cómo podemos obtener la fecha local y crear objetos del tipo fecha?
Una de las clases proporcionadas por el módulo datetime es una clase llamada date. Los objetos de esta clase representan una fecha que consta de año, mes y día.
La clase date del módulo datetime.
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> from datetime import date >>> hoy = date.today() >>> print(hoy) 2024-03-20 >>> print(hoy.year) 2024 >>> print(hoy.month) 3 >>> print(hoy.day) 20
- .year (año)
- .month(mes)
- .day(día)
>>> from datetime import date >>> mi_fecha = date(2018, 8, 1) >>> print(mi_fecha) 2018-08-01
| Parámetro | Restricciones |
| year | El parámetro year debe ser mayor o igual a 1 (constante MINYEAR) y menor o igual a 9999 (constante MAXYEAR). |
| month | El parámetro month debe ser mayor o igual a 1 y menor o igual a 12. |
| day | El parámetro day debe ser mayor o igual a 1 y menor o igual que el último día del mes y año indicados. |
Creación de un objeto de fecha a partir de una marca de tiempo.
La marca de tiempo con time en Unix.
Python 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from datetime import date
>>> import time
>>> marca_tiempo = time.time()
>>> print(f"la marca de tiempo es igual a {marca_tiempo}")
la marca de tiempo es igual a 1710949396.5617826
>>> d = date.fromtimestamp(marca_tiempo)
>>> print("Fecha: ", d)
Fecha: 2024-03-20
Creación de un objeto de fecha usando el formato ISO
fecha en formato ISO
# Ejemplo de programa que construye un objeto date
# desde una cadena que contiene una fecha en formato ISO YYYY-MM-DD
from datetime import date
# cumpleaños de Leonardo da vinci
cumple_leo = "1452-04-15"
# Construimos el objeto date
leo_date = date.fromisoformat(cumple_leo)
print(f"El cumpleaños de Leonardo da Vinci es {leo_date}")
print(type(leo_date))El método replace()
método replace
from datetime import date d = date(2021, 12, 5) print(d) d = d.replace(year=2022, month=11, day=4) print(d)
¿Que día de la semana es?
método weekday
from datetime import date d = date(2003,3,14) print(d.weekday())
método isoweekday
from datetime import date d = date(2003,3,14) print(d.weekday())
Creando objetos Time.
clase time
from datetime import time
t = time(20,1,20,1)
print("Tiempo:", t)
print("Hora:", t.hour)
print("Minutos:", t.minute)
print("Segundos:", t.second)
print("Microsegundo:", t.microsecond)
El módulo time.
1.- Controlar la velocidad de ejecución. Si estás realizando operaciones intensivas en un bucle o en una sección de código y deseas limitar la velocidad a la que se ejecutan esas operaciones, puedes usar sleep() para agregar una pausa entre iteraciones.
sleep del módulo time
import time
for i in range(5):
# Realizamos alguna tarea
print(i)
# Realizamos una pausa de 1 segundo entre class
# las iteraciones.
time.sleep(1)- 2.- Sincronización de procesos: En aplicaciones donde múltiples procesos o hilos trabajan simultáneamente y necesitan sincronizarse,
sleep()puede utilizarse para introducir una pausa controlada entre las operaciones de diferentes partes del código.
import threading
def proceso():
print("Inicio del proceso")
# Realizar algunas operaciones
time.sleep(2)
print("Fin del proceso")
thread = threading.Thread(target=proceso)
thread.start()
# Realizar otras operaciones mientras el hilo está en ejecución
print("Hilo principal realizando otras operaciones")sleep() puede ser útil para hacer pausas en la ejecución del programa.import time
while True:
# Realizar alguna tarea
print("Esperando por un evento...")
# Esperar 5 segundos antes de verificar nuevamente
time.sleep(5)sleep() suspende la ejecución del programa actual durante el tiempo especificado, por lo que puede bloquear otros procesos en el mismo hilo. En aplicaciones que requieren concurrencia, es posible que se prefiera el uso de asyncio.sleep() en lugar de time.sleep() para evitar bloqueos en programas asíncronos.La función ctime.
import time t = time.time() print(t) print(time.ctime(t))
Las funciones gmtime() y localtime()
time.struct_time: tm_year # Especifica el año. tm_mon # Especifica el mes (valor de 1 a 12) tm_mday # Especifica el día del mes (value from 1 to 31) tm_hour # Especifica la hora (valor de 0 a 23) tm_min # Especifica el minuto (valor de 0 a 59) tm_sec # Especifica el segundo (valor de 0 a 61) tm_wday # Especifica el día de la semana (valor de 0 a 6) tm_yday # Especifica el día del año (valor de 1 a 366) tm_isdst # Especifica si se aplica el horario de verano (1: sí, 0: no, -1: no se sabe) tm_zone # Especifica el nombre de la zona horaria (valor en forma abreviada) tm_gmtoff # Especifica el desplazamiento al este del UTC (valor en segundos) import timet = time.time()print(t)print(time.gmtime(t))print(time.localtime(t))
import timetimestamp = 1572879180st = time.gmtime(timestamp)print(time.asctime(st))print(time.mktime((2019, 11, 4, 14, 53, 0, 0, 308, 0)))
Creando objetos datetime.
import datetime
fh = datetime.datetime(2024,3,25, 0, 9 , 30)
print(f"la fecha y hora son: {fh}")
print(f"La fecha es: {fh.date()}")
print(f"La hora es: {fh.time()}")El ejemplo crea un objeto
El ejemplo muestra dos métodos que devuelven dos objetos diferentes. El método llamado
Métodos que devuelven la fecha y hora actual.
today() : devuelve la fecha y hora local actual con el atributo tzinfo establecido a None.now() : devuelve la fecha y hora local actual igual que el método today, a menos que le pasemos el argumento opcional tz. El argumento de este método debe ser un objeto de la subclase tzinfo.utcnow() : devuelve la fecha y hora UTC actual con el atributo tzinfo establecido a None.
from datetime import datetime
print("hoy:", datetime.today())
print("ahora:", datetime.now())
print("utc_ahora:", datetime.utcnow())Obteniendo una marca de tiempo.
import datetime dt = datetime.datetime(2024,3,25,23,51) print(dt.timestamp())
Dando formato a la fecha y a la hora.
from datetime import date
d = date(2023,3,25)
print(d.strftime('%d/%m/%Y'))from datetime import time
t = time(0,7,30)
print(t.strftime('%H:%M:%S'))La función strftime() en el módulo time.
import time
timestamp = 1572879180
st = time.gmtime(timestamp)
print(time.strftime("%Y/%m/%d %H:%M:%S", st))
print(time.strftime("%Y/%m/%d %H:%M:%S"))El método strptime().
from datetime import datetime
print(datetime.strptime("2024/03/26 23:17:00", "%Y/%m/%d %H:%M:%S"))Operaciones con la fecha y la hora.
from datetime import date from datetime import datetime d1 = date(2024, 3, 26) d2 = date(1974, 8, 7) print(d1 - d2) dt1 = datetime(2020, 11, 4, 0, 0, 0) dt2 = datetime(2019, 11, 4, 14, 53, 0) print(dt1 - dt2)
Creando objetos TimeDelta.
- days
- seconds
- microseconds
- milliseconds
- minutes
- hours
- weeks
from datetime import timedelta delta = timedelta(weeks=2, days=2, hours=3) print(delta)
from datetime import timedelta
delta = timedelta(weeks=2, days=2, hours=3)
print("Días:", delta.days)
print("Segundos:", delta.seconds)
print("Microsegundos:", delta.microseconds)from datetime import datetime delta = timedelta(weeks=2, days=2, hours=2) print(delta) delta2 = delta * 2 print(delta2) d = date(2019, 10, 4) + delta2 print(d) dt = datetime(2019, 10, 4, 14, 53) + delta2 print(dt)
El módulo calendar.
import calendar print(calendar.calendar(2024))
2024
January February March
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7 1 2 3 4 1 2 3
8 9 10 11 12 13 14 5 6 7 8 9 10 11 4 5 6 7 8 9 10
15 16 17 18 19 20 21 12 13 14 15 16 17 18 11 12 13 14 15 16 17
22 23 24 25 26 27 28 19 20 21 22 23 24 25 18 19 20 21 22 23 24
29 30 31 26 27 28 29 25 26 27 28 29 30 31
April May June
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7 1 2 3 4 5 1 2
8 9 10 11 12 13 14 6 7 8 9 10 11 12 3 4 5 6 7 8 9
15 16 17 18 19 20 21 13 14 15 16 17 18 19 10 11 12 13 14 15 16
22 23 24 25 26 27 28 20 21 22 23 24 25 26 17 18 19 20 21 22 23
29 30 27 28 29 30 31 24 25 26 27 28 29 30
July August September
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 7 1 2 3 4 1
8 9 10 11 12 13 14 5 6 7 8 9 10 11 2 3 4 5 6 7 8
15 16 17 18 19 20 21 12 13 14 15 16 17 18 9 10 11 12 13 14 15
22 23 24 25 26 27 28 19 20 21 22 23 24 25 16 17 18 19 20 21 22
29 30 31 26 27 28 29 30 31 23 24 25 26 27 28 29
30
October November December
Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su
1 2 3 4 5 6 1 2 3 1
7 8 9 10 11 12 13 4 5 6 7 8 9 10 2 3 4 5 6 7 8
14 15 16 17 18 19 20 11 12 13 14 15 16 17 9 10 11 12 13 14 15
21 22 23 24 25 26 27 18 19 20 21 22 23 24 16 17 18 19 20 21 22
28 29 30 31 25 26 27 28 29 30 23 24 25 26 27 28 29
30 31
import calendar print(calendar.month(2024, 3))
March 2024
Mo Tu We Th Fr Sa Su
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
import calendar calendar.setfirstweekday(6) # también se puede utilizar calendar.DIASEMANA # calendar.setfirstweekday(calendar.SUNDAY) calendar.prmonth(2024, 3)
March 2024
Su Mo Tu We Th Fr Sa
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
import calendar print(calendar.weekday(1452,4,15))
import calendar print(calendar.weekheader(1)) print(calendar.weekheader(3)) print(calendar.weekheader(5)) print(calendar.weekheader(10))
M T W T F S S Mon Tue Wed Thu Fri Sat Sun Mon Tue Wed Thu Fri Sat Sun Monday Tuesday Wednesday Thursday Friday Saturday Sunday
import calendar print(calendar.isleap(2024))
import calendar
c = calendar.Calendar(2)
for weekday in c.iterweekdays():
print(weekday, end=" ")
No hay comentarios:
Publicar un comentario