def ist_schaltjahr(jahr): return jahr % 4 == 0 and (jahr % 100 != 0 or jahr % 400 == 0) def zahl_zu_datum(tage): jahr = 1900 while True: tage_jahr = 366 if ist_schaltjahr(jahr) else 365 if tage >= tage_jahr: tage -= tage_jahr jahr += 1 else: break monate = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] if ist_schaltjahr(jahr): monate[1] = 29 monat = 1 while True: if tage >= monate[monat-1]: tage -= monate[monat-1] monat += 1 else: break tag = tage return (jahr, monat, tag) def tage_seit_1900(jahr, monat, tag): #Tage seit dem 01.01.1900 #Achtung Bug: Excel akzeptiert den 29.02.1900 und berechnet deshalb einen Tag mehr! tage_im_monat = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] gesamt_tage = 0 for y in range(1900, jahr): gesamt_tage += 366 if ist_schaltjahr(y) else 365 for m in range(1, monat): gesamt_tage += 29 if m == 2 and ist_schaltjahr(jahr) else tage_im_monat[m] gesamt_tage += tag return gesamt_tage def datum_zu_tage_seit_1900(datum): jahr = int(datum[:4]) monat = int(datum[4:6]) tag = int(datum[6:]) return tage_seit_1900(jahr, monat, tag) def unixtime(timestamp): #Sekunden seit dem 01.01.1970 tage = timestamp // 86400 + 25568 datum = zahl_zu_datum(tage) sekunden = timestamp % 86400 stunden = sekunden // 3600 sekunden %= 3600 minuten = sekunden // 60 sekunden %= 60 zeit = (stunden, minuten, sekunden) return datum, zeit #jahr = 2025 #monat = 3 #tag = 27 #tage = tage_seit_1900(jahr, monat, tag) #print(tage) #print(zahl_zu_datum(45742)) #print(unixtime(1616861304)) #print(datum_zu_tage_seit_1900("20250327"))