Python datetime (met voorbeelden)

In dit artikel leer je met behulp van voorbeelden de datum en tijd in Python te manipuleren.

Python heeft een module met de naam datetime om met datums en tijden te werken. Laten we een paar eenvoudige programma's maken met betrekking tot datum en tijd voordat we dieper gaan graven.

Voorbeeld 1: huidige datum en tijd ophalen

 import datetime datetime_object = datetime.datetime.now() print(datetime_object) 

Wanneer u het programma uitvoert, ziet de uitvoer er ongeveer zo uit:

 2018-12-19 09: 26: 03.478039

Hier hebben we datetime- module geïmporteerd met behulp van import datetimestatement.

Een van de klassen die in de datetimemodule zijn gedefinieerd , is datetimeklasse. Vervolgens hebben we de now()methode gebruikt om een datetimeobject te maken met de huidige lokale datum en tijd.

Voorbeeld 2: huidige datum ophalen

  import datetime date_object = datetime.date.today() print(date_object) 

Wanneer u het programma uitvoert, ziet de uitvoer er ongeveer zo uit:

 19/12/2018

In dit programma hebben we de today()methode gebruikt die in de dateklasse is gedefinieerd om een dateobject te krijgen dat de huidige lokale datum bevat.

Wat zit er in datetime?

We kunnen de functie dir () gebruiken om een ​​lijst te krijgen met alle attributen van een module.

 import datetime print(dir(datetime))

Wanneer u het programma uitvoert, is de uitvoer:

 ('MAXYEAR', 'MINYEAR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_divide_and_round', 'date', ' datetime ',' datetime_CAPI ',' time ',' timedelta ',' timezone ',' tzinfo ') 

Veelgebruikte klassen in de datetime-module zijn:

  • datum Klasse
  • tijd Klasse
  • datetime Klasse
  • timedelta Klasse

datetime.date Klasse

U kunt dateobjecten uit de dateklasse instantiëren . Een datumobject vertegenwoordigt een datum (jaar, maand en dag).

Voorbeeld 3: Datumobject om een ​​datum weer te geven

  import datetime d = datetime.date(2019, 4, 13) print(d) 

Wanneer u het programma uitvoert, is de uitvoer:

 13-04-2019

Als je je afvraagt, date()in het bovenstaande voorbeeld is een constructor van de dateklas. De constructor heeft drie argumenten: jaar, maand en dag.

De variabele a is een dateobject.

We kunnen alleen dateklasse importeren uit de datetimemodule. Hier is hoe:

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

Voorbeeld 4: huidige datum ophalen

U kunt een dateobject met de huidige datum maken door een klassemethode met de naam te gebruiken today(). Hier is hoe:

  from datetime import date today = date.today() print("Current date =", today) 

Voorbeeld 5: haal de datum op van een tijdstempel

We kunnen ook dateobjecten maken op basis van een tijdstempel. Een Unix-tijdstempel is het aantal seconden tussen een bepaalde datum en 1 januari 1970 om UTC. U kunt een tijdstempel naar een datum converteren met de fromtimestamp()methode.

  from datetime import date timestamp = date.fromtimestamp(1326244364) print("Date =", timestamp) 

Wanneer u het programma uitvoert, is de uitvoer:

 Datum = 2012-01-11

Voorbeeld 6: druk het jaar, de maand en de dag van vandaag af

We kunnen gemakkelijk jaar, maand, dag, dag van de week enz. Uit het datumobject halen. Hier is hoe:

  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

Een tijdobject dat vanuit de timeklasse wordt geïnstantieerd, vertegenwoordigt de lokale tijd.

Voorbeeld 7: Tijdobject om tijd weer te geven

  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) 

Wanneer u het programma uitvoert, is de uitvoer:

 a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11:34: 56,234566 

Voorbeeld 8: uur, minuut, seconde en microseconde afdrukken

Nadat u een timeobject heeft gemaakt, kunt u gemakkelijk de kenmerken ervan afdrukken, zoals uur, minuut enz.

  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) 

Als u het voorbeeld uitvoert, is de uitvoer:

 uur = 11 minuut = 34 seconde = 56 microseconde = 0 

Merk op dat we het microseconde-argument niet hebben doorstaan. Daarom wordt de standaardwaarde 0afgedrukt.

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. een tekenreeks die de datum en tijd vertegenwoordigt
  2. opmaakcode gelijk aan het eerste argument

Overigens worden de formaatcodes %d, %Ben %Ygebruikt voor respectievelijk dag, maand (volledige naam) en jaar.

Bezoek Python strptime () voor meer informatie.

Omgaan met tijdzone in Python

Stel dat u aan een project werkt en de datum en tijd moet weergeven op basis van hun tijdzone. In plaats van te proberen de tijdzone zelf af te handelen, raden we u aan om een ​​pytZ-module van derden te gebruiken.

  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")) 

Wanneer u het programma uitvoert, ziet de uitvoer er ongeveer zo uit:

 Lokale tijd: 2018-12-20 13: 10: 44.260462 America / New_York tijd: 2018-12-20 13: 10: 44.260462 Europe / London tijd: 2018-12-20 13: 10: 44.260462 

Hier zijn datetime_NY en datetime_London datetime-objecten die de huidige datum en tijd van hun respectievelijke tijdzone bevatten.

Interessante artikelen...