Programa de Python para encontrar el número de días entre dos fechas dadas

Dadas dos fechas, escriba un programa en Python para encontrar el número total de días entre ellas. 

Ejemplos: 

Input : dt1 = 13/12/2018, dt2 = 25/2/2019
Output : 74 days

Input : dt1 = 01/01/2004, dt2 = 01/01/2005
Output : 366 days 

Enfoque ingenuo: una solución ingenua es comenzar desde dt1 y seguir contando los días hasta llegar a dt2 . Esta solución requiere más de O(1) tiempo. 

Una solución mejor y más sencilla es contar el número total de días antes de dt1, es decir, el total de días desde 00/00/0000 hasta dt1 , y luego contar el número total de días antes de dt2 . Finalmente, devuelve la diferencia entre los dos conteos.  

Python3

# Python3 program two find number of
# days between two given dates
 
# A date has day 'd', month 'm' and year 'y'
 
 
class Date:
    def __init__(self, d, m, y):
        self.d = d
        self.m = m
        self.y = y
 
 
# To store number of days in all months from
# January to Dec.
monthDays = [31, 28, 31, 30, 31, 30,
             31, 31, 30, 31, 30, 31]
 
# This function counts number of leap years
# before the given date
 
 
def countLeapYears(d):
 
    years = d.y
 
    # Check if the current year needs to be considered
    # for the count of leap years or not
    if (d.m <= 2):
        years -= 1
 
    # An year is a leap year if it is a multiple of 4,
    # multiple of 400 and not a multiple of 100.
    return int(years / 4) - int(years / 100) + int(years / 400)
 
 
# This function returns number of days between two
# given dates
def getDifference(dt1, dt2):
 
    # COUNT TOTAL NUMBER OF DAYS BEFORE FIRST DATE 'dt1'
 
    # initialize count using years and day
    n1 = dt1.y * 365 + dt1.d
 
    # Add days for months in given date
    for i in range(0, dt1.m - 1):
        n1 += monthDays[i]
 
    # Since every leap year is of 366 days,
    # Add a day for every leap year
    n1 += countLeapYears(dt1)
 
    # SIMILARLY, COUNT TOTAL NUMBER OF DAYS BEFORE 'dt2'
 
    n2 = dt2.y * 365 + dt2.d
    for i in range(0, dt2.m - 1):
        n2 += monthDays[i]
    n2 += countLeapYears(dt2)
 
    # return difference between two counts
    return (n2 - n1)
 
 
# Driver program
dt1 = Date(13, 12, 2018)
dt2 = Date(25, 2, 2019)
 
print(getDifference(dt1, dt2), "days")
Producción: 

74 days

 

Usando el módulo de fecha y hora de Python:

Python viene con un módulo de fecha y hora incorporado que nos ayuda a resolver varios problemas relacionados con la fecha y la hora. Para encontrar la diferencia entre dos fechas, simplemente ingresamos las dos fechas con el tipo de fecha y las restamos, lo que a su vez nos proporciona la cantidad de días entre las dos fechas. 

Python3

# Python3 program to find number of days
# between two given dates
from datetime import date
 
def numOfDays(date1, date2):
    return (date2-date1).days
     
# Driver program
date1 = date(2018, 12, 13)
date2 = date(2019, 2, 25)
print(numOfDays(date1, date2), "days")
Producción: 

74 days

 

Publicación traducida automáticamente

Artículo escrito por Smitha Dinesh Semwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *