2017-05-04 10 views
0

Ich versuche die Anzahl der Tage zwischen zwei Benutzereingabetagen zu ermitteln.Anzahl der Tage zwischen zwei Benutzereingabedaten

Das ist, was ich habe:

import datetime 

now = datetime.datetime.now() 

print(now.day) 

print(now.year) 

print(now.month) 

salario = float(input("¿Cuál es su salario mensual en colones? ")) 

print ("Fecha inicial de la incapacidad") 
dia1 = int(input("Día: ")) 
mes1 = int(input("Mes: ")) 
ano1 = int(input("Año: ")) 
fecha1 = datetime.date(dia1, mes1, ano1) 
print ("Fecha final de la incapacidad") 
dia2 = int(input("Día: ")) 
mes2 = int(input("Mes: ")) 
ano2 = int(input("Año: ")) 
fecha2 = datetime.date(dia2, mes2, ano2) 

diasinc = fecha2 - fecha2 
print (diasinc.day) 

(Basierend auf der Antwort von this Eintrag)

Ich trete dia1 = 20, mes1 = 5, ano1 = 2017 für den 20. Mai Datum, 2017.

Aber ich bekomme immer "ValueError: Tag ist außerhalb des Bereichs für Monat".

Kann mir jemand diesen Fehler erklären? Weißt du, wie ich das ändern kann?

Vielen Dank im Voraus.

Antwort

5

date erhalten Sie die Argumente in der Reihenfolge year, month, day. Sie füttern sie in umgekehrter Reihenfolge - und das macht ein ungültiges Datum (Sie können nicht den Mai 2017, 5).

Versuchen Sie stattdessen

fecha1 = datetime.date(ano1, mes1, dia1) 

(Gleiches gilt für fecha2)

+0

Vielen Dank! Ich kann nicht glauben, dass es so einfach war. Weißt du, wie ich die zwei Daten abziehen kann, um die Anzahl der Tage dazwischen zu erhalten? –

+0

@ IreneCastañeda mit 'diasinc.days'. Du vergisst das 's' – Uriel

+0

ja Entschuldigung, als ich versuchte, dass die Website sagte, eine halbe Stunde zu warten, um zu beenden. –

2

Die Argumente für date sind year, month, days um. Entsprechend Ihrer Eingabe wird der Tag auf 2017 gesetzt, was für Tage eines Monats außerhalb des zulässigen Bereichs liegt. Deshalb der Fehler.

Try -

fecha1 = datetime.date(ano1, mes1, dia1)

gleiche gilt für die nächste

Verwandte Themen