Python datetime
Python datetime
In dit artikel leer je aan de hand van voorbeelden de datum en tijd in Python te manipuleren.
Video:Python datetime - Werken met datums en tijden
Python heeft een module met de naam datetime werken met data en tijden. Laten we een paar eenvoudige programma's maken met betrekking tot datum en tijd voordat we dieper graven.
Voorbeeld 1:huidige datum en tijd ophalen
import datetime
datetime_object = datetime.datetime.now()
print(datetime_object)
Wanneer u het programma uitvoert, zal de uitvoer zoiets zijn als:
2018-12-19 09:26:03.478039
Hier hebben we datetime . geïmporteerd module met behulp van import datetime
verklaring.
Een van de klassen gedefinieerd in de datetime
module is datetime
klas. We gebruikten toen now()
methode om een datetime
. te maken object dat de huidige lokale datum en tijd bevat.
Voorbeeld 2:huidige datum ophalen
import datetime
date_object = datetime.date.today()
print(date_object)
Wanneer u het programma uitvoert, zal de uitvoer zoiets zijn als:
2018-12-19
In dit programma hebben we today()
. gebruikt methode gedefinieerd in de date
klasse om een date
. te krijgen object dat de huidige lokale datum bevat.
Wat is er binnen 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 les
- tijd les
- datetime-les
- timedelta-klasse
datetime.date Klasse
U kunt date
instant instantiëren objecten uit de date
klas. 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:
2019-04-13
Als je je afvraagt, date()
in het bovenstaande voorbeeld is een constructor van de date
klas. De constructor gebruikt drie argumenten:jaar, maand en dag.
De variabele a is een date
voorwerp.
We kunnen alleen date
import importeren klas uit de datetime
module. Dit is hoe:
from datetime import date
a = date(2019, 4, 13)
print(a)
Voorbeeld 4:huidige datum ophalen
U kunt een date
. maken object dat de huidige datum bevat met behulp van een klassenmethode met de naam today()
. Dit is hoe:
from datetime import date
today = date.today()
print("Current date =", today)
Voorbeeld 5:Haal datum uit een tijdstempel
We kunnen ook date
. maken objecten uit een tijdstempel. Een Unix-tijdstempel is het aantal seconden tussen een bepaalde datum en 1 januari 1970 bij UTC. U kunt een tijdstempel tot op heden converteren met fromtimestamp()
methode.
from datetime import date
timestamp = date.fromtimestamp(1326244364)
print("Date =", timestamp)
Wanneer u het programma uitvoert, is de uitvoer:
Date = 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. Dit 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 geïnstantieerd uit de time
klasse staat voor 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:Uren, minuten, seconden en microseconden afdrukken
Nadat u een time
. heeft gemaakt object, kunt u eenvoudig 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)
Wanneer u het voorbeeld uitvoert, is de uitvoer:
hour = 11 minute = 34 second = 56 microsecond = 0
Merk op dat we microseconde nog niet zijn gepasseerd argument. Vandaar de standaardwaarde 0
wordt afgedrukt.
datetime.datetime
De datetime
module heeft een klasse met de naam dateclass
die informatie kan bevatten van beide datum en tijd objecten.
Voorbeeld 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)
Wanneer u het programma uitvoert, is de uitvoer:
2018-11-28 00:00:00 2017-11-28 23:55:59.342380
De eerste drie argumenten jaar , maand en dag in de datetime()
constructor zijn verplicht.
Voorbeeld 10:Jaar, maand, uur, minuut en tijdstempel afdrukken
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())
Wanneer u het programma uitvoert, is de uitvoer:
year = 2017 month = 11 day = 28 hour = 23 minute = 55 timestamp = 1511913359.34238
datetime.timedelta
Een timedelta
object vertegenwoordigt het verschil tussen twee datums of tijden.
Voorbeeld 11:verschil tussen twee datums en tijden
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))
Wanneer u het programma uitvoert, is de uitvoer:
t3 = 201 days, 0:00:00 t6 = -333 days, 1:14:20 type of t3 = <class 'datetime.timedelta'> type of t6 = <class 'datetime.timedelta'>
Let op, beide t3 en t6 zijn van <class 'datetime.timedelta'>
typ.
Voorbeeld 12:Verschil tussen twee tijddelta-objecten
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)
Wanneer u het programma uitvoert, is de uitvoer:
t3 = 14 days, 13:55:39
Hier hebben we twee timedelta
objecten t1 en t2 en hun verschil wordt op het scherm afgedrukt.
Voorbeeld 13:Negatief tijddelta-object afdrukken
from datetime import timedelta
t1 = timedelta(seconds = 33)
t2 = timedelta(seconds = 54)
t3 = t1 - t2
print("t3 =", t3)
print("t3 =", abs(t3))
Wanneer u het programma uitvoert, is de uitvoer:
t3 = -1 day, 23:59:39 t3 = 0:00:21
Voorbeeld 14:Tijdsduur in seconden
U kunt het totale aantal seconden in een tijddelta-object verkrijgen met total_seconds()
methode.
from datetime import timedelta
t = timedelta(days = 5, hours = 1, seconds = 33, microseconds = 233423)
print("total seconds =", t.total_seconds())
Wanneer u het programma uitvoert, is de uitvoer:
total seconds = 435633.233423
Je kunt ook de som van twee datums en tijden vinden met +
exploitant. U kunt ook een timedelta
. vermenigvuldigen en delen object door gehele getallen en floats.
Python-formaat datetime
De manier waarop datum en tijd worden weergegeven, kan verschillen in verschillende plaatsen, organisaties, enz. Het is gebruikelijker om mm/dd/yyyy
te gebruiken in de VS, terwijl dd/mm/yyyy
komt vaker voor in het VK.
Python heeft strftime()
en strptime()
methoden om dit aan te pakken.
Python strftime() - datetime object naar string
De strftime()
methode is gedefinieerd onder klassen date
, datetime
en time
. De methode maakt een opgemaakte string van een gegeven date
, datetime
of time
voorwerp.
Voorbeeld 15:Datum opmaken met 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)
Wanneer u het programma uitvoert, zal de uitvoer zoiets zijn als:
time: 04:34:52 s1: 12/26/2018, 04:34:52 s2: 26/12/2018, 04:34:52
Hier, %Y
, %m
, %d
, %H
enz. zijn formaatcodes. De strftime()
methode neemt een of meer opmaakcodes en retourneert een opgemaakte tekenreeks op basis daarvan.
In het bovenstaande programma, t , s1 en s2 zijn strings.
%Y
- jaar [0001,..., 2018, 2019,..., 9999]%m
- maand [01, 02, ..., 11, 12]%d
- dag [01, 02, ..., 30, 31]%H
- uur [00, 01, ..., 22, 23%M
- minuut [00, 01, ..., 58, 59]%S
- tweede [00, 01, ..., 58, 59]
Voor meer informatie over strftime()
en formatteer codes, bezoek:Python strftime().
Python strptime() - string tot datetime
De strptime()
methode maakt een datetime
object uit een gegeven string (die datum en tijd vertegenwoordigt).
Voorbeeld 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)
Wanneer u het programma uitvoert, is de uitvoer:
date_string = 21 June, 2018 date_object = 2018-06-21 00:00:00
De strptime()
methode heeft twee argumenten:
- een tekenreeks die datum en tijd vertegenwoordigt
- formaatcode gelijk aan het eerste argument
Trouwens, %d
, %B
en %Y
formaatcodes worden gebruikt voor dag , maand (volledige naam) en jaar respectievelijk.
Bezoek Python strptime() voor meer informatie.
Omgaan met tijdzone in Python
Stel dat u aan een project werkt en datum en tijd moet weergeven op basis van hun tijdzone. In plaats van zelf met de tijdzone om te gaan, raden we je aan een pytZ-module van een derde partij 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, zal de uitvoer zoiets zijn als:
Local time: 2018-12-20 13:10:44.260462 America/New_York time: 2018-12-20 13:10:44.260462 Europe/London time: 2018-12-20 13:10:44.260462
Hier, datetime_NY en datetime_London zijn datetime-objecten die de huidige datum en tijd van hun respectieve tijdzone bevatten.
Python