> Modules standards > Autres modules > date et temps
date et temps
import time; print(time.time()) : pour avoir le temps courant en seconde, avec une précision à la microseconde.
Pour suspendre le process pendant un certain nombre de secondes : time.sleep(2.3)
Pour importer le module : import datetime
Dates
Construction d'une date simple :
- datetime.date(2014, 10, 9) : construit la date avec l'année, le mois et le jour.
- datetime.date.today() : construit la date du jour.
- datetime.date.fromtimestamp(time.time()) : construit la date à partir d'un timestamp donné, comme celui renvoyé par time.time()
Méthodes sur les dates, avec par exemple une date
myDate = datetime.date(2014, 10, 9) :
- print(myDate.year, myDate.month, myDate.day) : permet de récupérer l'année, le mois (entre 1 et 12) et le jour, ici 2014 10 9
- myDate.replace(year = 2013) : renvoie la date avec l'année remplacée par la valeur donnée, donc ici datetime.date(2013, 10, 9). Idem avec month et day.
- myDate.weekday() : renvoie le jour de la semaine, 0 pour lundi, 6 pour dimanche.
- myDate.isoweekday() : renvoie le jour de la semaine, mais 1 pour lundi, 7 pour dimanche.
- myDate.isoformat() : date formattée, ici 2014-10-09.
Date + temps
Construction d'une date et d'un temps :
- datetime.datetime(2014, 10, 9, 11, 22, 33) : en donnant l'année, le mois, le jour, l'heure (entre 0 et 24), les minutes et les secondes.
- on peut aussi donner les microsecondes datetime.datetime(2014, 10, 9, 11, 22, 33, 123456)
- datetime.datetime.today() : la date et l'heure courante
- datetime.datetime.utcnow() : comme today(), mais donne l'heure UTC (temps universel).
- datetime.datetime.fromtimestamp(time.time()) : donne la date et l'heure à partir d'un timestamp comme celui renvoyé par time.time()
Méthodes sur les dates et temps :
- imprimer la date courante : datetime.datetime.today().strftime('%Y-%m-%d %H:%M:%S')
- print(myDateTime.year, myDateTime.month, myDateTime.day, myDateTime.hour, myDateTime.minute, myDateTime.second, myDateTime.microsecond) : permet de récupérer l'année, le mois (entre 1 et 12), le jour, l'heure, la minute et la seconde.
- myDateTime.timestamp() : récupère le time, comme avec time.time().
- myDateTime.date(), myDateTime.time() : permettent de récupérer séparément la date et l'heure.
- mydatetime.date().isoformat() : pour avoir juste la date au format YYYY-MM-DD à partir d'une datetime.
- myDateTime.replace(minute = 55) : date et temps avec les minutes remplacées par la valeur indiquée (idem pour tous les autres champs).
- myDateTime.isoformat() : donne la date et le temps en format iso, par exemple 2014-10-10 08:00:56.214838. Si les microsecondes sont à 0, elles ne sont pas présentes, par exemple : myDateTime.replace(microsecond = 0).isoformat() donne 2014-10-10T08:00:56. On peut aussi donner un caractère autre que T pour séparer la date et le temps : myDateTime.isoformat(' ').
- pour avoir la date et le temps courants formattés en ISO : datetime.datetime.today().replace(microsecond = 0).isoformat().
- str(myDateTime) : comme isoformat, mais avec un espace comme caractère de séparation plutôt qu'un T.
- pour avoir le timestamp (nombre de secondes depuis le 1er janvier 1970, avec une précision à la microseconde) : (myDateTime - datetime.datetime(1970, 1, 1)).total_seconds()
- pour avoir le jour de la semaine, utiliser weekday() ou isoweekday(), voir la classe date() ci-dessus.
Pour convertir une date-temps en chaîne de caractères et réciproquement :
- myDatetime = datetime.datetime.now()
- myString = myDatetime.strftime('%Y-%m-%d %H:%M:%S') : conversion en chaîne de caractères
- myDatetime = datetime.datetime.strptime(myString,'%Y-%m-%d %H:%M:%S') : reconversion de la chaîne en date-temps. Les différents placeholder de formattage sont :
- %Y : année YYYY
- %m : mois entre 01 et 12
- %d : jour du mois entre 01 et 31
- %H : heure de 0 à 23
- %M : minute de 0 à 59
- %S : seconde de 0 à 59
- %z : décalage de time zone par rapport à UTC
- %a : jour de la semaine abrégé, dans la locale
- %A : jour de la semaine complet, dans la locale
- %b : mois abrégé, dans la locale
- %B : mois complet, dans la locale
- %c : Locale's appropriate date and time representation.
- %I : heure de 01 à 12 (pour AM/PM)
- %p : AM ou PM
Pour récupérer le nombre de secondes depuis le 1er janvier 1970 à partir d'une date-temps :
- myDateTime = datetime.datetime.now(); int(myDateTime.strftime('%s'))
- ça donne la même chose que int(time.time())
Temps
Construction d'un temps :
- datetime.time(11, 22, 33) : construction d'un temps (on peut donner les microsecondes, comme datetime.datetime).
Pour parser uniquement le temps :
- datetime.datetime.strptime('06:22:00 PM', '%I:%M:%S %p').time() : donne uniquement l'objet datetime.time
- datetime.datetime.strptime renvoie la date au 1er janvier 1900 qui est la date défaut en python.
Méthodes sur les temps :
- myTime.hour, myTime.minute, myTime.second, myTime.microsecond : permet de récupérer les heures, minutes, secondes, microsecondes
- myTime.replace(minute = 55), myTime.isoformat(), str(myTime) : comme pour les datetime.
Calculs sur les dates et temps
Calculs sur les dates et temps :
- les objets datetime.timedelta représentent les durées.
- construction d'une durée : datetime.timedelta(weeks = 1, days = 1, hours = 12, minutes = 5, seconds = 10, milliseconds = 345, microseconds = 456)
- on peut avoir des valeurs négatives pour n'importe quels des arguments.
- en interne, un timedelta est converti en jours, secondes et microsecondes.
- td1.total_seconds() : renvoie le nombre de secondes pour ce timedelta (en incluant tout).
- td1.days : le nombre de jours d'une timedelta
- on peut calculer une difference de date, ça donnera un timedelta : myDateTime1 = datetime.datetime(2014, 10, 9, 12, 35, 0); myDateTime2 = datetime.datetime(2014, 10, 9, 15, 45, 0); td = myDateTime2 - myDateTime1; td donne datetime.timedelta(0, 11400).
- on peut faire des opérations d'addition ou soustraction sur les timedelta : td1 = datetime.timedelta(hours = 12, minutes = 5); td2 = datetime.timedelta(hours = 5, minutes = 3); print(td1 + td2); print(td1 - td2); donne datetime.timedelta(0, 61680) et datetime.timedelta(0, 25320)
- on peut multiplier un timedelta par une constante : td1 * 2 donne ici datetime.timedelta(1, 600)
- ça marche pareil avec des date, plutôt que des datetime.
- on peut comparer 2 dates, ça donne le résultat attendu : myDateTime1 < myDateTime2 (<=, >, >= marchent aussi).
- myDateTime = datetime.datetime(2014, 10, 9, 12, 35, 0); td = datetime.timedelta(minutes = 10); myDateTime + td : ajout d'un timedelta à une dateTime, donne ici datetime.datetime(2014, 10, 9, 12, 45).
- myDate = datetime.date(2014, 10, 9); td = datetime.timedelta(days = 2); myDate + td : ajout d'un timedelta à une date, donne ici datetime.date(2014, 10, 11).
Copyright python-simple.com
programmer en python, tutoriel python, graphes en python, Aymeric Duclert