UniSquat_Python/date_tools.py

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)