antux18
f8ff4ee9f6
Suppression de l'import de 'definitions' dans 'main_cli' Modification de l'affichage de la prochaine occupation de la salle, ou de la prochaine libération : affichage de l'heure précise plutôt que du temps en minutes restant Diverses améliorations de lisibilité du code, des commentaires, des docstrings...
103 lines
2.0 KiB
Python
103 lines
2.0 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Thu Feb 24 16:36:32 2022
|
|
|
|
@author: antoine
|
|
"""
|
|
|
|
########################
|
|
### Module datetools ###
|
|
########################
|
|
|
|
"""
|
|
Diverses fonctions relatives à la date du jour et à l'heure.
|
|
"""
|
|
|
|
|
|
# Modules :
|
|
import datetime
|
|
|
|
|
|
# Fonctions :
|
|
|
|
def bissextile(year) :
|
|
"""
|
|
|
|
Indique si l'année 'year' est bissextile ou non.
|
|
|
|
Parameters
|
|
----------
|
|
year : int
|
|
Année dont on veut vérifier la bissextilité.
|
|
|
|
Returns
|
|
-------
|
|
bool
|
|
'True' si 'year' est bissextile, 'False' sinon.
|
|
|
|
"""
|
|
|
|
return (year % 4 == 0 and year % 100 != 0) or year % 400 == 0
|
|
|
|
def month_days(month, year) :
|
|
"""
|
|
Renvoie le nombre de jours dans le mois 'month'.
|
|
|
|
Parameters
|
|
----------
|
|
month : int (between 1 and 12)
|
|
Mois dont on veut connaître le nombre de jours.
|
|
year : int
|
|
Année, pour vérifier la bissextilité (cas du mois de février).
|
|
|
|
Returns
|
|
-------
|
|
int
|
|
Nombre de jours dans 'month'.
|
|
|
|
"""
|
|
|
|
if month == 2 :
|
|
if bissextile(year) :
|
|
return 29
|
|
else :
|
|
return 28
|
|
elif month in (4,6,9,11) :
|
|
return 30
|
|
else :
|
|
return 31
|
|
|
|
|
|
def date_input() :
|
|
"""
|
|
Demande à l'utilisateur d'entrer une date (jour, mois, année,
|
|
heure, minutes).
|
|
|
|
Returns
|
|
-------
|
|
datetime.datetime()
|
|
Date entrée au format datetime.
|
|
"""
|
|
|
|
year = int(input("Entrer l'année.\n> "))
|
|
|
|
month = 0
|
|
while month not in range(1, 13) :
|
|
month = int(input("Entrer le mois.\n> "))
|
|
|
|
mdays = month_days(month, year)
|
|
day = 0
|
|
while day not in range(1, mdays + 1) :
|
|
day = int(input("Entrer le jour.\n> "))
|
|
|
|
hour = -1
|
|
while hour not in range(0, 25) :
|
|
hour = int(input("Entrer l'heure.\n> "))
|
|
|
|
minute = -1
|
|
while minute not in range(0, 60) :
|
|
minute = int(input("Entrer les minutes.\n> "))
|
|
|
|
return datetime.datetime(year, month, day, hour, minute)
|