Datetime Python (avec exemples)

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 datetimestatement.

L'une des classes définies dans le datetimemodule est la datetimeclasse. Nous avons ensuite utilisé une now()méthode pour créer un datetimeobjet 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 dateclasse pour obtenir un dateobjet 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 dateobjets de la dateclasse. 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 dateclasse. Le constructeur prend trois arguments: année, mois et jour.

La variable a est un dateobjet.

Nous ne pouvons importer que la dateclasse du datetimemodule. Voici comment:

  from datetime import date a = date(2019, 4, 13) print(a)

Exemple 4: obtenir la date actuelle

Vous pouvez créer un dateobjet 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 dateobjets à 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 timeclasse 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 timeobjet, 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 0est 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:

  1. une chaîne représentant la date et l'heure
  2. code de format équivalent au premier argument

Soit dit en passant, %d, %Bet les %Ycodes 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.

Articles intéressants...