Estoy trabajando en crear un sistema para una biblioteca en Python. Actualmente estoy trabajando en una función que probará si el usuario tiene libros vencidos, pero recibo el error ValueError: la hora debe ser entre 0..23.
Dict "usuarios":
users = {
"djoh01": {
"password": "johndoe1",
"books": [{"duedate": {"year": 2021, "month": 1, "day": 4}}],
}
}
Python:
def checkMissingBooks(username):
global users
try:
books = users[username]["books"] # get users book list
except: # error getting list of books
return False # they have never checked out a book as the list can not be found
for book in books:
if (
datetime.time(
book["duedate"]["year"],
book["duedate"]["month"],
book["duedate"]["day"],
)
< datetime.date.today()
):
return True
¿Cómo puedo hacer que esto funcione?
3
¿Por qué estás intentando construir un datetime.time a partir de un año, mes y fecha? ¿Quizás quieras datetime.date?
- Samsagaz
28/03/2021 a las 17:41
------------------------------------
Está buscando una hora (con una hora entre 00 y 23) desde que estás usando datetime.time. Quieres usar datetime.date en su lugar.
...
if datetime.date(book["duedate"]["year"], book["duedate"]["month"], book["duedate"]["day"]) < datetime.date.today():
return True
devuelve True con su función para el nombre de usuario "djoh01".
------------------------------------
datetime.time devuelve la hora, use datetime.date en su lugar, consulte fecha y hora, como:
....
if datetime.time(book["duedate"]["year"], book["duedate"]["month"], book["duedate"]["day"]) < datetime.date.today():
1
Aceptaré esto como respuesta tan pronto como stackoverflow me lo permita.
- UCYT5040
28/03/2021 a las 17:45