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 datetime
statement.
Een van de klassen die in de datetime
module zijn gedefinieerd , is datetime
klasse. Vervolgens hebben we de now()
methode gebruikt om een datetime
object 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 date
klasse is gedefinieerd om een date
object 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 date
objecten uit de date
klasse 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 date
klas. De constructor heeft drie argumenten: jaar, maand en dag.
De variabele a is een date
object.
We kunnen alleen date
klasse importeren uit de datetime
module. Hier is hoe:
from datetime import date a = date(2019, 4, 13) print(a)
Voorbeeld 4: huidige datum ophalen
U kunt een date
object 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 date
objecten 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 time
klasse 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 time
object 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 0
afgedrukt.
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:
- een tekenreeks die de datum en tijd vertegenwoordigt
- opmaakcode gelijk aan het eerste argument
Overigens worden de formaatcodes %d
, %B
en %Y
gebruikt 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.