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 is_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)
|