====== Dates et Heures ======
===== Date et heure =====
import datetime
d = datetime.date(1971, 4, 22)
t = datetime.time(8, 45)
Combiner une date avec une heure :
import datetime
d = datetime.date(1971, 4, 22)
t = datetime.time(8, 45)
dt = datetime.datetime.combine(d, t)
===== Date et heure actuelles =====
import datetime
today = datetime.date.today()
=> Renvoie un objet ''datetime.date''
import datetime
now = datetime.datetime.now()
=> Renvoie un objet ''datetime.datetime''
===== Extraire la date d'une valeur date/heure =====
Obtenir un objet **datetime.date** à partir d'un objet **datetime.datetime**
import datetime
datetime.datetime.now()
# datetime.datetime(2020, 12, 17, 7, 11, 9, 23066)
datetime.datetime.now().date
# datetime.date(2020, 12, 17)
===== Conversion de date/heure vers chaîne =====
Voir: [[https://stackoverflow.com/questions/2150739/iso-time-iso-8601-in-python]]
import datetime
datetime.datetime.now().strftime("%m/%d/%Y, %H:%M:%S")
# '12/14/2020, 06:49:17'
datetime.datetime.now().strftime("%Y%m%d-%H%M")
# '20201412-0649'
Format **ISO 8601** :
import datetime
datetime.date.today().isoformat()
# '2020-12-14'
datetime.datetime.now().isoformat()
# '2020-12-14T06:50:13.265235'
===== Conversion de chaîne vers date/heure =====
import datetime
datetime.datetime.strptime("1971-04-22 08:30:25", "%Y-%m-%d %H:%M:%S")
# datetime.datetime(1971, 4, 22, 8, 30, 25)
datetime.datetime.strptime("1971-04-22", "%Y-%m-%d")
# datetime.datetime(1971, 4, 22, 0, 0)
datetime.datetime.strptime("1971-04-22", "%Y-%m-%d").date()
# datetime.date(1971, 4, 22)
Format **ISO 8601** :!: Python min **3.7** :!: :
import datetime
datetime.date.fromisoformat("1971-04-22")
# datetime.date(1971, 4, 22)
datetime.datetime.fromisoformat("1971-04-22T08:30:25")
# datetime.datetime(1971, 4, 22, 8, 30, 25)
===== Début et fin de mois =====
Dates de début et de fin du mois écoulé :
import datetime
# date d'aujourd'hui
today = datetime.date.today()
# trouver le premier jour du mois en cours
firstDay = today.replace(day = 1)
# reculer d'un jour => dernier jour du mois dernier
lastMonthEnd = firstDay - datetime.timedelta(days = 1)
# trouver le premier jour du mois dernier
lastMonthStart = lastMonthEnd.replace(day = 1)
=> les variables ''lastMonthStart'' et ''lastMonthDay'' sont du type ''datetime.date''.
Dates de début et de fin du mois en cours :
import datetime, calendar
def first_day_this_month():
today = datetime.date.today()
return today.replace(day = 1)
def last_day_this_month():
today = datetime.date.today()
monthrange = calendar.monthrange(today.year, today.month)
return today.replace(day = monthrange[1])
=> Ces fonctions renvoient une valeur de type ''datetime.date''
===== Numéro de semaine / Jour de la semaine =====
==== Jour de la semaine ====
import datetime
today = datetime.date.today()
# indice du jour (voir tableau ci-dessous)
jour = today.weekday()
# nom du jour
print("Nous sommes un " + today.strftime('%A'))
^ 0 | Monday |
^ 1 | Tuesday |
^ 2 | Wednesday |
^ 3 | Thursday |
^ 4 | Friday |
^ 5 | Saturday |
^ 6 | Sunday |
==== Numéro de semaine ====
import datetime
today = datetime.date.today()
# Afficher le numéro de semaine avec %W
print("Nous sommes en semaine " + today.strftime('%W'))
# L'obtenir sous forme numérique
semaine = int(today.strftime('%W'))
==== Isocalendar ====
Une meilleure méthode :-) permet d'obtenir la semaine et le jour de la semaine, mais
**attention** les numéros de jours correspondent à une norme différente :
^ 1 | Monday |
^ 2 | Tuesday |
^ 3 | Wednesday |
^ 4 | Thursday |
^ 5 | Friday |
^ 6 | Saturday |
^ 7 | Sunday |
import datetime
today = datetime.date.today()
i = today.isocalendar()
annee = i.year
semaine = i.week
jour = i.weekday