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")
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")
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