Dans cet article, vous apprendrez à manipuler la date et l'heure en Python à l'aide d'exemples.
Python a un module nommé datetime pour travailler avec les dates et les heures. Créons quelques programmes simples liés à la date et à l'heure avant de creuser plus profondément.
Exemple 1: obtenir la date et l'heure actuelles
import datetime datetime_object = datetime.datetime.now() print(datetime_object)
Lorsque vous exécutez le programme, la sortie sera quelque chose comme:
2018-12-19 09: 26: 03.478039
Ici, nous avons importé le module datetime en utilisant import datetime
statement.
L'une des classes définies dans le datetime
module est la datetime
classe. Nous avons ensuite utilisé une now()
méthode pour créer un datetime
objet contenant la date et l'heure locales actuelles.
Exemple 2: obtenir la date actuelle
import datetime date_object = datetime.date.today() print(date_object)
Lorsque vous exécutez le programme, la sortie sera quelque chose comme:
2018-12-19
Dans ce programme, nous avons utilisé la today()
méthode définie dans la date
classe pour obtenir un date
objet contenant la date locale courante.
Qu'y a-t-il à l'intérieur de datetime?
Nous pouvons utiliser la fonction dir () pour obtenir une liste contenant tous les attributs d'un module.
import datetime print(dir(datetime))
Lorsque vous exécutez le programme, la sortie sera:
('MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', ' datetime ',' datetime_CAPI ',' time ',' timedelta ',' timezone ',' tzinfo ')
Les classes couramment utilisées dans le module datetime sont:
- classe de date
- Classe de temps
- Classe datetime
- classe timedelta
classe datetime.date
Vous pouvez instancier des date
objets de la date
classe. Un objet date représente une date (année, mois et jour).
Exemple 3: objet Date pour représenter une date
import datetime d = datetime.date(2019, 4, 13) print(d)
Lorsque vous exécutez le programme, la sortie sera:
2019-04-13
Si vous vous demandez, date()
dans l'exemple ci-dessus se trouve un constructeur de la date
classe. Le constructeur prend trois arguments: année, mois et jour.
La variable a est un date
objet.
Nous ne pouvons importer que la date
classe du datetime
module. Voici comment:
from datetime import date a = date(2019, 4, 13) print(a)
Exemple 4: obtenir la date actuelle
Vous pouvez créer un date
objet contenant la date actuelle en utilisant une méthode de classe nommée today()
. Voici comment:
from datetime import date today = date.today() print("Current date =", today)
Exemple 5: obtenir une date à partir d'un horodatage
Nous pouvons également créer des date
objets à partir d'un horodatage. Un horodatage Unix est le nombre de secondes entre une date particulière et le 1er janvier 1970 à UTC. Vous pouvez convertir un horodatage en date en utilisant la fromtimestamp()
méthode.
from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp)
Lorsque vous exécutez le programme, la sortie sera:
Date = 11/01/2012
Exemple 6: Imprimer l'année, le mois et le jour d'aujourd'hui
Nous pouvons facilement obtenir l'année, le mois, le jour, le jour de la semaine, etc. à partir de l'objet de date. Voici comment:
from datetime import date # date object of today's date today = date.today() print("Current year:", today.year) print("Current month:", today.month) print("Current day:", today.day)
datetime.time
Un objet heure instancié à partir de la time
classe représente l'heure locale.
Exemple 7: objet Time pour représenter le temps
from datetime import time # time(hour = 0, minute = 0, second = 0) a = time() print("a =", a) # time(hour, minute and second) b = time(11, 34, 56) print("b =", b) # time(hour, minute and second) c = time(hour = 11, minute = 34, second = 56) print("c =", c) # time(hour, minute, second, microsecond) d = time(11, 34, 56, 234566) print("d =", d)
Lorsque vous exécutez le programme, la sortie sera:
a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11: 34: 56.234566
Exemple 8: Imprimer l'heure, la minute, la seconde et la microseconde
Une fois que vous avez créé un time
objet, vous pouvez facilement imprimer ses attributs tels que l'heure, les minutes, etc.
from datetime import time a = time(11, 34, 56) print("hour =", a.hour) print("minute =", a.minute) print("second =", a.second) print("microsecond =", a.microsecond)
Lorsque vous exécutez l'exemple, la sortie sera:
heure = 11 minutes = 34 secondes = 56 microsecondes = 0
Notez que nous n'avons pas passé d'argument en microseconde. Par conséquent, sa valeur par défaut 0
est imprimée.
datetime.datetime
The datetime
module has a class named dateclass
that can contain information from both date and time objects.
Example 9: Python datetime object
from datetime import datetime #datetime(year, month, day) a = datetime(2018, 11, 28) print(a) # datetime(year, month, day, hour, minute, second, microsecond) b = datetime(2017, 11, 28, 23, 55, 59, 342380) print(b)
When you run the program, the output will be:
2018-11-28 00:00:00 2017-11-28 23:55:59.342380
The first three arguments year, month and day in the datetime()
constructor are mandatory.
Example 10: Print year, month, hour, minute and timestamp
from datetime import datetime a = datetime(2017, 11, 28, 23, 55, 59, 342380) print("year =", a.year) print("month =", a.month) print("hour =", a.hour) print("minute =", a.minute) print("timestamp =", a.timestamp())
When you run the program, the output will be:
year = 2017 month = 11 day = 28 hour = 23 minute = 55 timestamp = 1511913359.34238
datetime.timedelta
A timedelta
object represents the difference between two dates or times.
Example 11: Difference between two dates and times
from datetime import datetime, date t1 = date(year = 2018, month = 7, day = 12) t2 = date(year = 2017, month = 12, day = 23) t3 = t1 - t2 print("t3 =", t3) t4 = datetime(year = 2018, month = 7, day = 12, hour = 7, minute = 9, second = 33) t5 = datetime(year = 2019, month = 6, day = 10, hour = 5, minute = 55, second = 13) t6 = t4 - t5 print("t6 =", t6) print("type of t3 =", type(t3)) print("type of t6 =", type(t6))
When you run the program, the output will be:
t3 = 201 days, 0:00:00 t6 = -333 days, 1:14:20 type of t3 = type of t6 =
Notice, both t3 and t6 are of type.
Example 12: Difference between two timedelta objects
from datetime import timedelta t1 = timedelta(weeks = 2, days = 5, hours = 1, seconds = 33) t2 = timedelta(days = 4, hours = 11, minutes = 4, seconds = 54) t3 = t1 - t2 print("t3 =", t3)
When you run the program, the output will be:
t3 = 14 days, 13:55:39
Here, we have created two timedelta
objects t1 and t2, and their difference is printed on the screen.
Example 13: Printing negative timedelta object
from datetime import timedelta t1 = timedelta(seconds = 33) t2 = timedelta(seconds = 54) t3 = t1 - t2 print("t3 =", t3) print("t3 =", abs(t3))
When you run the program, the output will be:
t3 = -1 day, 23:59:39 t3 = 0:00:21
Example 14: Time duration in seconds
You can get the total number of seconds in a timedelta object using total_seconds()
method.
from datetime import timedelta t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423) print("total seconds =", t.total_seconds())
When you run the program, the output will be:
total seconds = 435633.233423
You can also find sum of two dates and times using +
operator. Also, you can multiply and divide a timedelta
object by integers and floats.
Python format datetime
The way date and time is represented may be different in different places, organizations etc. It's more common to use mm/dd/yyyy
in the US, whereas dd/mm/yyyy
is more common in the UK.
Python has strftime()
and strptime()
methods to handle this.
Python strftime() - datetime object to string
The strftime()
method is defined under classes date
, datetime
and time
. The method creates a formatted string from a given date
, datetime
or time
object.
Example 15: Format date using strftime()
from datetime import datetime # current date and time now = datetime.now() t = now.strftime("%H:%M:%S") print("time:", t) s1 = now.strftime("%m/%d/%Y, %H:%M:%S") # mm/dd/YY H:M:S format print("s1:", s1) s2 = now.strftime("%d/%m/%Y, %H:%M:%S") # dd/mm/YY H:M:S format print("s2:", s2)
When you run the program, the output will be something like:
time: 04:34:52 s1: 12/26/2018, 04:34:52 s2: 26/12/2018, 04:34:52
Here, %Y
, %m
, %d
, %H
etc. are format codes. The strftime()
method takes one or more format codes and returns a formatted string based on it.
In the above program, t, s1 and s2 are strings.
%Y
- year (0001,… , 2018, 2019,… , 9999)%m
- month (01, 02,… , 11, 12)%d
- day (01, 02,… , 30, 31)%H
- hour (00, 01,… , 22, 23%M
- minute (00, 01,… , 58, 59)%S
- second (00, 01,… , 58, 59)
To learn more about strftime()
and format codes, visit: Python strftime().
Python strptime() - string to datetime
The strptime()
method creates a datetime
object from a given string (representing date and time).
Example 16: strptime()
from datetime import datetime date_string = "21 June, 2018" print("date_string =", date_string) date_object = datetime.strptime(date_string, "%d %B, %Y") print("date_object =", date_object)
When you run the program, the output will be:
date_string = 21 June, 2018 date_object = 2018-06-21 00:00:00
The strptime()
method takes two arguments:
- une chaîne représentant la date et l'heure
- code de format équivalent au premier argument
Soit dit en passant, %d
, %B
et les %Y
codes de format sont utilisés pour le jour, le mois (nom complet) et l' année respectivement.
Visitez Python strptime () pour en savoir plus.
Gestion du fuseau horaire en Python
Supposons que vous travaillez sur un projet et que vous deviez afficher la date et l'heure en fonction de leur fuseau horaire. Plutôt que d'essayer de gérer vous-même le fuseau horaire, nous vous suggérons d'utiliser un module pytZ tiers.
from datetime import datetime import pytz local = datetime.now() print("Local:", local.strftime("%m/%d/%Y, %H:%M:%S")) tz_NY = pytz.timezone('America/New_York') datetime_NY = datetime.now(tz_NY) print("NY:", datetime_NY.strftime("%m/%d/%Y, %H:%M:%S")) tz_London = pytz.timezone('Europe/London') datetime_London = datetime.now(tz_London) print("London:", datetime_London.strftime("%m/%d/%Y, %H:%M:%S"))
Lorsque vous exécutez le programme, la sortie sera quelque chose comme:
Heure locale: 2018-12-20 13: 10: 44.260462 Heure America / New_York: 2018-12-20 13: 10: 44.260462 Heure Europe / London: 2018-12-20 13: 10: 44.260462
Ici, datetime_NY et datetime_London sont des objets datetime contenant la date et l'heure actuelles de leur fuseau horaire respectif.