Sumar y restar días en Python con datetime.

logo python

Por el uso tan amplio de Python es realmente necesario poder sumar y restar días en Python, y para eso podemos emplear la librería datetime.

En situaciones donde necesitamos llevar un seguimiento de la fecha y la hora, podemos emplear este modulo que es el encargado de de manipular fechas y horas, y está integrado en la biblioteca estándar de Python.

Las clases con las que cuenta el modulo son:

 NOMBREDESCRIPCIÓN
1.fechaMuestra la fecha según el calendario georgiano con atributos como año, mes y día.
2.horaMuestra el tiempo, independientemente de cualquier día en particular, con atributos como hora, minuto, segundo, microsegundo y tzinfo.
3.fecha y horaEs una colección de fecha y hora con los atributos año, mes, día, hora, minuto, segundo, microsegundo y tzinfo.
4.timedeltaSe utiliza para manipular la fecha.
5.tzinfoProporciona información sobre la zona horaria.

Otros post sobre Python

TIMEDELTA  para sumar y restar

Para sumar o restar fecha, usamos la función timedelta() ya que permite realizar operaciones aritméticas con las fecha como sumar o restar y es fácilmente implementable.

La sintaxis es la siguiente

class datetime.timedelta(días = 10, segundos = 40, microsegundos = 10, milisegundos = 60, minutos = 10, horas = 4, semanas = 8)

Nota: si no especificamos por defecto, toma el entero como un día. 

Sumar 10 días 

from datetime import date, timedelta
 
hoy = date.today()
 
print("hoy es : ", hoy)
 
td = timedelta(10)
print("Dentro de 10 diás estaremos a : ", hoy + td)

Restar 1 día 

from datetime import date, timedelta
 
hoy = date.today()
 
print("hoy es : ",hoy)
 
print("ayer fue : ",ayer - timedelta(1))

Sumar tiempos específicos

from datetime import datetime, timedelta
 
ahora = datetime.now()
print("Current Date and time :- ", curr)
 
nuevo = timedelta(days = 10, seconds = 40, 
                         microseconds = 10,
                         milliseconds = 60, 
                         minutes = 10, hours = 4,
                         weeks = 8)
 
print("nuevo tiempo calculado :- ", nuevo + new_datetime)
from datetime import datetime, timedelta
  
  
ahora = datetime.now()
  
# printing initial_date
print ("fecha inicio", str(ahora))
  
# Calculamos fechas futuras
en_dos_anos = ahora + \
                        timedelta(days = 730)
  
en_dos_dias = ahora + \
                         timedelta(year = 2)
  

print('en dos años estaresmos a:', str(en_dos_anos))
print('en dos dias será:', str(en_dos_dias))

Y hasta aquí, espero sinceramente que este articulo sirva de ayuda a alguien.

Y todo como el diamante antes que luz, fue carbón.

J. Martí

Convertir una fecha a fecha y hora en Python

logo python

En este post, muestro otra forma de trabajar con el modulo datetime , empleándolo cuando necesitamos convertir una fecha a fecha y hora en Python

Desde mi conocimiento existen dos modos de hacerlo, una es mediante el uso directo de datetime y el otro utilizando combine datetime().

Aquí puedes ver como sumar y restar fechas con datetime en Python.

Partamos del supuesto que necesitas combinar la fecha y la hora en un solo objeto

Si solo tiene una fecha específica o la fecha actual y no tiene una hora específica, puede inicializarla con el tiempo mínimo usando el objeto datetime

En el ejemplo siguiente importamos la librería datetime, creamos una variable para la fecha, otra para la hora y las combinamos ambas, con combine().

Ejemplo 1

from datetime import date as Hoy
from datetime import datetime as HoyHora
fechaHoy =  Hoy.today()
print(fechaHoy)
horaHoy  =  HoyHora.now().time()
print(horaHoy)
FechaHoraHoy = FechaHoraHoy.combine(fechaHoy, horaHoy )
print(FechaHoraHoy)

Otra  cosa que podemos hacer es extraer  la fecha desde un objeto dado.

from datetime import date as fecha
from datetime import datetime as tiempo
fecha = fecha.today()
print(fecha)
tiempo = tiempo(fecha.year, fecha.month, fecha.day)
print(tiempo)

Y hasta aquí.

Espero que este post, sirva de ayuda a alguien.

Tres cosas necesitan las ovejas para andar en manadas, el miedo al perro, la voz de amo y que la viene detrás empuje por miedo a quedarse sola.

Y.

Comparar fechas con Python

logo python

Una necesidad que puede surgir al programar, es tener que comparar fechas en Python.
Implementar las comparaciones no es algo complejo y para ello emplearemos operadores de comparación de uso común como <, >, <=, >=, !=  y otros, dentro del modulo datetime().

import datetime
  
# fecha in yyyy/mm/dd format
fecha_1 = datetime.datetime(2020, 4, 6)
fecha_2 = datetime.datetime(2019, 12, 30)
fecha_3 = datetime.datetime(2019, 1, 1) 

# la comparacion devolvera verdadero o falso

print("La fecha_1 es mas nueva que la fecha_3 : ", fecha_1 > fecha_3)
print("La fecha_2 es mas vieja que la fecha_3 : ", fecha_2 < fecha_3)
print("La fecha_3 es igual a la fecha_1 : ", fecha_3 == fecha_1)
print("La fecha_1 no es la misma que la fecha_2 : ", fecha_1 != fecha_2)

La salida que obtenemos es :
La fecha_1 es mas nueva que la fecha_3 :  True
La fecha_2 es mas vieja que la fecha_3 :  False
La fecha_3 es igual a la fecha_1 :  False
La fecha_1 no es la misma que la fecha_2 :  True

Sumar y restar días en Python

En este otro ejemplo comparamos varias fechas que entramos por teclado.​

# Entramos por teclado las fechas

dia_1, mes_1, año_1 = [int(x) for x in input("Introduzca fecha del primer envio"
        "(YYYY/MM/DD) : ").split('/')]
  
primera = date(dia_1, mes_1, año_1)
  

dia_2, mes_2, año_2 = [int(x) for x in input("Introduzca fecha del segundo envio"
        "(YYYY/MM/DD) : ").split('/')]
  
segunda = date(dia_2, mes_2, año_2)

dia_3, mes_3, año_3 = [int(x) for x in input("Introduzca fecha del tercer envio"
        "(YYYY/MM/DD) : ").split('/')]
  
tercera = date(dia_3, mes_3, año_3)
  
# Check the dates
if primera == segunda:
    print("Es raro que ambas se hicieran en mismo dia")
      
elif tercera > primera:
    print("es correcto")
      
else:
    print("Debe analizarse")

Y esto es todo, espero sinceramente que este post, sirva a alguien.

No discutas nunca con un imbécil, te llevará a su terreno y allí te ganará por experiencia

D.
Translate »