# StDneva vrne zaporedno številko dneva. Pri tem se pretvarja, da velja
# gregorijanski koledar že od leta 1 naprej; prvi januar leta 1 dobi
# zaporedno številko 1 itd.
def StDneva(dan, mesec, leto):
dolzineMesecev = [31, 28, 31, 30, 31, 30,
31, 31, 30, 31, 30, 31]
n = dan
# Prištejmo število dni v istem letu pred tem mesecem
for m in range(1, mesec):
n += dolzineMesecev[m - 1]
if m == 2 and leto % 4 == 0 and \
(leto % 100 != 0 or leto % 400 == 0):
n += 1
# Zdaj moramo prišteti še število dni v vseh letih od 1 do leto-1
leto -= 1
# Najprej imamo nekaj 400-letnih obdobij, ki imajo vsako po 97
# prestopnih let (npr. 801..1200, 1201..1600 itd.).
n += (leto // 400) * (365 * 400 + 97)
leto %= 400
# Nato nam ostane nekaj 100-letnih obdobij, ki imajo vsako po 24
# prestopnih let (npr. 1601..1700, 1701..1800, 1801..1900).
n += (leto // 100) * (365 * 100 + 24)
leto %= 100
# Nato nam ostane nekaj 4-letnih obdobij, ki imajo vsako po 1
# prestopno leto (npr. 1901..1904, 1905..1908 itd.).
n += (leto // 4) * (365 * 4 + 1)
leto %= 4
# Nato nam ostane še nekaj navadnih (ne-prestopnih) let
n += leto * 365
return n
def KolikoDni(d1, m1, l1, d2, m2, l2):
stevilo2 = StDneva(d2, m2, l2)
stevilo1 = StDneva(d1, m1, l1)
return stevilo2 - stevilo1
# Koliko dni je preteklo od neodvisnosti Slovenije (25. 6. 1991) do
# vstopa v EU (1. 5. 2004)...
# izpiše: 4694
print(KolikoDni(25, 6, 1991, 1, 5, 2004))