Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Python

Python datetime beheersen: praktische gids voor datums, tijden en tijdzones

Python datetime beheersen

Ontdek hoe je met datums en tijden in Python werkt via hands-on voorbeelden en duidelijke uitleg.

Video: Python datetime – Werken met datums en tijden

Python's datetime-module biedt krachtige tools voor het manipuleren van datums en tijden. Hieronder lopen we door veelvoorkomende taken, van het ophalen van het huidige moment tot formateren en timezone-afhandeling.


Voorbeeld 1: Huidige datum en tijd ophalen

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

De uitvoer ziet eruit als:

2018-12-19 09:26:03.478039

We importeren de module met import datetime. De datetime-klasse bevat een now()-methode die de lokale datum en tijd retourneert.


Voorbeeld 2: Huidige datum ophalen

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

De uitvoer is:

2018-12-19

We gebruiken today() van de date-klasse om de huidige kalenderdatum op te halen.


De datetime-module verkennen

Voer dir(datetime) uit om alle attributen en klassen te lijsten:

import datetime
print(dir(datetime))

Uitvoer:

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

Belangrijke klassen zijn date, time, datetime en timedelta.


datetime.date-klasse

De date-klasse vertegenwoordigt een kalenderdatum (jaar, maand, dag).


Voorbeeld 3: Een datum-object aanmaken

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

Resultaat:

2019-04-13

Hier is date() een constructor die year, month en day als argumenten accepteert.

De variabele a is een date-instantie.


Alleen de date-klasse importeren:

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

Voorbeeld 4: Huidige datum

Gebruik de today() classmethod:

from datetime import date
vandaag = date.today()
print("Huidige datum =", vandaag)

Voorbeeld 5: Vanuit timestamp

Een Unix-timestamp telt seconden sinds 1970-01-01 UTC. Converteer met fromtimestamp():

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

Uitvoer:

Datum = 2012-01-11

Voorbeeld 6: Jaar, maand, dag benaderen

from datetime import date
vandaag = date.today()
print("Huidig jaar:", vandaag.year)
print("Huidige maand:", vandaag.month)
print("Huidige dag:", vandaag.day)

datetime.time

De time-klasse slaat een kloktijd op zonder datum.


Voorbeeld 7: Tijd-objecten aanmaken

from datetime import time
a = time()
print("a =", a)
b = time(11, 34, 56)
print("b =", b)
c = time(hour=11, minute=34, second=56)
print("c =", c)
d = time(11, 34, 56, 234566)
print("d =", d)

Resultaat:

a = 00:00:00 b = 11:34:56 c = 11:34:56 d = 11:34:56.234566

Voorbeeld 8: Tijd-componenten inspecteren

from datetime import time
a = time(11, 34, 56)
print("uur =", a.hour)
print("minuut =", a.minute)
print("seconde =", a.second)
print("microseconde =", a.microsecond)

Uitvoer:

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

datetime.datetime

De datetime-klasse combineert zowel datum- als tijdinformatie.


Voorbeeld 9: Een datetime-object aanmaken

from datetime import datetime
# jaar, maand, dag
A = datetime(2018, 11, 28)
print(A)
# volledige specificatie
B = datetime(2017, 11, 28, 23, 55, 59, 342380)
print(B)

Resultaat:

2018-11-28 00:00:00 2017-11-28 23:55:59.342380

Jaar, maand en dag zijn verplicht; uur, minuut, seconde en microseconde defaulten naar nul.


Voorbeeld 10: Componenten & timestamp inspecteren

from datetime import datetime
A = datetime(2017, 11, 28, 23, 55, 59, 342380)
print("jaar =", A.year)
print("maand =", A.month)
print("dag =", A.day)
print("uur =", A.hour)
print("minuut =", A.minute)
print("timestamp =", A.timestamp())

Uitvoer:

jaar = 2017 maand = 11 dag = 28 uur = 23 minuut = 55 timestamp = 1511913359.34238

datetime.timedelta

Een timedelta-object vertegenwoordigt een duur tussen twee datums of tijden.


Voorbeeld 11: Verschil tussen datums & tijden

from datetime import datetime, date
D1 = date(year=2018, month=7, day=12)
D2 = date(year=2017, month=12, day=23)
D3 = D1 - D2
print("D3 =", D3)
D4 = datetime(year=2018, month=7, day=12, hour=7, minute=9, second=33)
D5 = datetime(year=2019, month=6, day=10, hour=5, minute=55, second=13)
D6 = D4 - D5
print("D6 =", D6)
print("type van D3 =", type(D3))
print("type van D6 =", type(D6))

Uitvoer:

D3 = 201 days, 0:00:00 D6 = -333 days, 1:14:20 type van D3 = <class 'datetime.timedelta'> type van D6 = <class 'datetime.timedelta'>

Voorbeeld 12: Timedelta-objecten aftrekken

from datetime import timedelta
D1 = timedelta(weeks=2, days=5, hours=1, seconds=33)
D2 = timedelta(days=4, hours=11, minutes=4, seconds=54)
D3 = D1 - D2
print("D3 =", D3)

Uitvoer:

D3 = 14 days, 13:55:39

Voorbeeld 13: Negatieve timedelta

from datetime import timedelta
D1 = timedelta(seconds=33)
D2 = timedelta(seconds=54)
D3 = D1 - D2
print("D3 =", D3)
print("abs(D3) =", abs(D3))

Uitvoer:

D3 = -1 day, 23:59:39 abs(D3) = 0:00:21

Voorbeeld 14: Totale seconden in een timedelta

from datetime import timedelta
D = timedelta(days=5, hours=1, seconds=33, microseconds=233423)
print("totale seconden =", D.total_seconds())

Uitvoer:

totale seconden = 435633.233423

Je kunt datums optellen, een timedelta vermenigvuldigen met een getal, en delen door een float om duraties te schalen.


Datums formateren en parsen

Verschillende locales gebruiken diverse datumformaten (bijv. mm/dd/yyyy in VS vs dd/mm/yyyy in UK). Python's strftime() en strptime()-methoden helpen converteren tussen datetime-objecten en geformatteerde strings.


Python strftime() – datetime naar string

from datetime import datetime
nu = datetime.now()
# Uur:minuut:seconde
T = nu.strftime("%H:%M:%S")
print("tijd:", T)
# VS-formaat
S1 = nu.strftime("%m/%d/%Y, %H:%M:%S")
print("S1:", S1)
# UK-formaat
S2 = nu.strftime("%d/%m/%Y, %H:%M:%S")
print("S2:", S2)

Typische uitvoer:

tijd: 04:34:52 S1: 12/26/2018, 04:34:52 S2: 26/12/2018, 04:34:52

Veelvoorkomende formaatcodes: %Y jaar, %m maand, %d dag, %H uur, %M minuut, %S seconde.


Python strptime() – string naar datetime

from datetime import datetime
datum_string = "21 juni, 2018"
print("datum_string =", datum_string)
datum_object = datetime.strptime(datum_string, "%d %B, %Y")
print("datum_object =", datum_object)

Uitvoer:

datum_string = 21 juni, 2018 datum_object = 2018-06-21 00:00:00

Hier is %d dag, %B volledige maandnaam, en %Y jaar.


Timezone-awareness

Voor applicaties die tijden in verschillende zones moeten tonen of berekenen, vermijd handmatige berekeningen en gebruik de pytz-bibliotheek.

from datetime import datetime
import pytz
lokaal = datetime.now()
print("Lokaal:", lokaal.strftime("%m/%d/%Y, %H:%M:%S"))
tz_NY = pytz.timezone('America/New_York')
dt_NY = datetime.now(tz_NY)
print("NY:", dt_NY.strftime("%m/%d/%Y, %H:%M:%S"))
tz_Londen = pytz.timezone('Europe/London')
dt_Londen = datetime.now(tz_Londen)
print("Londen:", dt_Londen.strftime("%m/%d/%Y, %H:%M:%S"))

Voorbeelduitvoer:

Lokaal: 12/20/2018, 13:10:44 NY: 12/20/2018, 08:10:44 Londen: 12/20/2018, 13:10:44

De datetime_NY en datetime_Londen objecten bevatten timezone-aware timestamps.

Python

  1. Python Datatypes onder de knie krijgen: Een praktische gids
  2. Python Operators onder de knie krijgen: Een uitgebreide gids
  3. Python Pass Statement onder de knie krijgen: Een praktische gids
  4. Python Functie-argumenten onder de knie krijgen: Positionele, Keyword en Default Parameters
  5. Python-dictionaries beheersen: aanmaken, manipuleren en geavanceerde technieken
  6. Python-iterators: hoe ze werken en hoe je je eigen maakt
  7. Python-closures uitgelegd: hoe geneste functies variabelen vangen
  8. Huidige datum en tijd ophalen in Python: een praktische gids
  9. Python: Huidige tijd en tijdzonedata eenvoudig ophalen
  10. Python's time.sleep() onder de knie krijgen: best practices, multithreading en real-world voorbeelden
  11. Python Overzicht: Hoog-Niveau, Leesbaar, Interactief & Object-Georiënteerd