logo

Datetime-module voor Python

In Python zijn datum en tijd geen eigen gegevenstypen, maar een module met de naam Datum Tijd in Python kan worden geïmporteerd om zowel met de datum als met de tijd te werken. Python Datetime-module wordt ingebouwd in Python, dus het is niet nodig om het extern te installeren.

In dit artikel gaan we onderzoeken hoe DateTime in Python werkt en wat zijn de hoofdklassen van de DateTime-module in Python.

Inhoudsopgave



Python DateTime-module

Python Datetime module levert klassen om met datum en tijd te werken. Deze klassen bieden verschillende functies voor het omgaan met datums, tijden en tijdsintervallen. Datum en DateTime zijn een object in Python, dus als je ze manipuleert, manipuleer je objecten en geen tekenreeksen of tijdstempels.

De DateTime-module is onderverdeeld in 6 hoofdklassen:

  • datum – Een geïdealiseerde naïeve datum, ervan uitgaande dat de huidige Gregoriaanse kalender altijd van kracht was en altijd van kracht zal zijn. De attributen zijn jaar, maand en dag. u kunt verwijzen naar – Python DateTime – Datumklasse
  • tijd – Een geïdealiseerde tijd, onafhankelijk van een bepaalde dag, ervan uitgaande dat elke dag precies 24*60*60 seconden heeft. De attributen zijn uur, minuut, seconde, microseconde en tzinfo. U kunt verwijzen naar – Python DateTime – Tijdklasse
  • datum Tijd – Het is een combinatie van datum en tijd samen met de attributen jaar, maand, dag, uur, minuut, seconde, microseconde en tzinfo. U kunt verwijzen naar – Python DateTime – DateTime-klasse
  • tijddelta – Een duur die het verschil tussen twee datum-, tijd- of datetime-instanties uitdrukt in een resolutie van microseconden. U kunt verwijzen naar – Python DateTime – Timedelta-klasse
  • tzinfo – Het biedt tijdzone-informatieobjecten. U kunt verwijzen naar – Python – datetime.tzinfo()
  • tijdzone – Een klasse die de abstracte basisklasse tzinfo implementeert als een vaste offset ten opzichte van de UTC (nieuw in versie 3.2). U kunt verwijzen naar – Omgaan met tijdzone in Python

Python Date-klasse

De date-klasse wordt gebruikt om datumobjecten in Python te instantiëren. Wanneer een object van deze klasse wordt geïnstantieerd, vertegenwoordigt het een datum in het formaat JJJJ-MM-DD . De constructor van deze klasse heeft drie verplichte argumenten jaar, maand en datum nodig.

Python Datumklasse Syntaxis

class datetime.date(year, month, day)>

De argumenten moeten zich in het volgende bereik bevinden:

  • MINYAAR <= jaar <= MAXJAAR
  • 1 <= maand <= 12
  • 1 <= dag <= aantal dagen in de opgegeven maand en jaar

Opmerking – Als het argument geen geheel getal is, wordt er een TypeError gegenereerd en als het buiten het bereik valt, wordt er een ValueError gegenereerd.

Datumobject dat gegevens in Python vertegenwoordigt

Initialiseren van de constructor en doorgeven van argumenten in de notatie jaar, maand en datum.

Python3




# Python program to> # demonstrate date class> # import the date class> from> datetime>import> date> my_date>=> date(>1996>,>12>,>11>)> print>(>'Date passed as argument is'>, my_date)> # Uncommenting my_date = date(1996, 12, 39)> # will raise an ValueError as it is> # outside range> # uncommenting my_date = date('1996', 12, 11)> # will raise a TypeError as a string is> # passed instead of integer>

>

>

Uitgang:

Date passed as argument is 1996-12-11>
Traceback (most recent call last):  File '/home/ccabfb570d9bd1dcd11dc4fe55fd6ba2.py', line 14, in   my_date = date(1996, 12, 39) ValueError: day is out of range for month  Traceback (most recent call last):  File '/home/53b974e10651f1853eee3c004b48c481.py', line 18, in   my_date = date('1996', 12, 11) TypeError: an integer is required (got type str)>

Haal de huidige datum op

Om de huidige lokale datum te retourneren, wordt de functie today() van de date-klasse gebruikt. De functie today() wordt geleverd met verschillende attributen (jaar, maand en dag). Deze kunnen afzonderlijk worden afgedrukt.

Python3




# Python program to> # print current date> from> datetime>import> date> # calling the today> # function of date class> today>=> date.today()> print>(>'Today's date is'>, today)>

>

>

Uitvoer

Today's date is 2021-08-19>

Ontvang het jaar, de maand en de datum van vandaag

We kunnen de attributen jaar, maand en datum ophalen uit het date-object met behulp van het attribuut jaar, maand en datum van de datumklasse.

Python3




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

>

>

Uitvoer

Current year: 2021 Current month: 8 Current day: 19>

Datum ophalen uit tijdstempel

We kunnen datumobjecten maken van tijdstempels y=met behulp van de fromtimestamp() methode. De tijdstempel is het aantal seconden vanaf 1 januari 1970 bij UTC tot een bepaalde datum.

Python3




from> datetime>import> datetime> # Getting Datetime from timestamp> date_time>=> datetime.fromtimestamp(>1887639468>)> print>(>'Datetime from timestamp:'>, date_time)>

>

>

Uitvoer

Datetime from timestamp: 2029-10-25 16:17:48>

Converteer datum naar tekenreeks

We kunnen het date-object converteren naar een string-representatie met behulp van twee functies isoformat() en strftime().

Python3


Java-tutorial voor beginners



from> datetime>import> date> > # calling the today> # function of date class> today>=> date.today()> > # Converting the date to the string> Str> => date.isoformat(today)> print>(>'String Representation'>,>Str>)> print>(>type>(>Str>))>

>

>

Uitvoer

String Representation 2021-08-19>

Lijst met datumklassemethoden

Functienaam

Beschrijving

ctijd() Retourneert een tekenreeks die de datum vertegenwoordigt
vanisokalender() Retourneert een datum die overeenkomt met de ISO-kalender
vanisoformat() Retourneert een datumobject uit de tekenreeksweergave van de datum
vanordinaal() Retourneert een datumobject uit de proleptische Gregoriaanse rangtelwoord, waarbij 1 januari van jaar 1 rangtelwoord 1 heeft
vantijdstempel() Retourneert een datumobject uit de POSIX-tijdstempel
isocalendar() Retourneert een jaar, week en weekdag
isoformaat() Retourneert de tekenreeksweergave van de datum
isoweekdag() Retourneert de dag van de week als een geheel getal waarbij maandag 1 is en zondag 7
vervangen() Wijzigt de waarde van het datumobject met de opgegeven parameter
strftijd() Retourneert een tekenreeksweergave van de datum met het opgegeven formaat
tijdsverloop() Retourneert een object van het type time.struct_time
Vandaag() Retourneert de huidige lokale datum
toordinaal() Retourneert de proleptische Gregoriaanse rangtelwoord van de datum, waarbij 1 januari van jaar 1 rangtelwoord 1 heeft
weekdag() Retourneert de dag van de week als geheel getal, waarbij maandag 0 is en zondag 6

Python Time-les

De tijdklasse creëert het tijdobject dat de lokale tijd vertegenwoordigt, onafhankelijk van welke dag dan ook.

Constructor-syntaxis:

class datetime.time(uur=0, minuut=0, seconde=0, microseconde=0, tzinfo=Geen, *, vouw=0)

Alle argumenten zijn optioneel. tzinfo kan Geen zijn, anders moeten alle attributen een geheel getal zijn in het volgende bereik:

  • 0 <= uur < 24
  • 0 <= minuut < 60
  • 0 <= seconde < 60
  • 0 <= microseconde < 1000000
  • invouwen [0, 1]

Voorbeeld 1: Tijdobject dat de tijd in Python vertegenwoordigt

Python3




# Python program to> # demonstrate time class> from> datetime>import> time> # calling the constructor> my_time>=> time(>13>,>24>,>56>)> print>(>'Entered time'>, my_time)> # calling constructor with 1> # argument> my_time>=> time(minute>=>12>)> print>(>' Time with one argument'>, my_time)> # Calling constructor with> # 0 argument> my_time>=> time()> print>(>' Time without argument'>, my_time)> # Uncommenting time(hour = 26)> # will rase an ValueError as> # it is out of range> # uncommenting time(hour ='23')> # will raise TypeError as> # string is passed instead of int>

>

>

Uitgang:

Entered time 13:24:56  Time with one argument 00:12:00  Time without argument 00:00:00>
Traceback (most recent call last):  File '/home/95ff83138a1b3e67731e57ec6dddef25.py', line 21, in   print(time(hour=26)) ValueError: hour must be in 0..23  Traceback (most recent call last):  File '/home/fcee9ba5615b0b74fc3ba39ec9a789fd.py', line 21, in   print(time(hour='23')) TypeError: an integer is required (got type str)>

Voorbeeld 2: Haal uren, minuten, seconden en microseconden op

Nadat u een tijdobject heeft aangemaakt, kunnen de attributen ervan ook afzonderlijk worden afgedrukt.

Python3




from> datetime>import> time> Time>=> time(>11>,>34>,>56>)> print>(>'hour ='>, Time.hour)> print>(>'minute ='>, Time.minute)> print>(>'second ='>, Time.second)> print>(>'microsecond ='>, Time.microsecond)>

>

>

Uitgang:

hour = 11 minute = 34 second = 56 microsecond = 0>

Voorbeeld 3: Converteer het Time-object naar String

We kunnen het tijdobject naar een string converteren met behulp van de isoformat() -methode.

Python3




from> datetime>import> time> # Creating Time object> Time>=> time(>12>,>24>,>36>,>1212>)> # Converting Time object to string> Str> => Time.isoformat()> print>(>'String Representation:'>,>Str>)> print>(>type>(>Str>))>

>

>

Uitvoer

String Representation: 12:24:36.001212>

Lijst met tijdklassemethoden

Functienaam

Beschrijving

dst() Retourneert tzinfo.dst() is tzinfo is niet Geen
vanisoformat() Retourneert een tijdobject uit de tekenreeksrepresentatie van de tijd
isoformaat() Retourneert de tekenreeksweergave van tijd uit het time-object
vervangen() Verandert de waarde van het tijdobject met de opgegeven parameter
strftijd() Retourneert een tekenreeksrepresentatie van de tijd met het opgegeven formaat
tznaam() Retourneert tzinfo.tzname() is tzinfo is niet Geen
utcoffset() Retourneert tzinfo.utcffsets() is tzinfo is niet Geen

Python Datetime-klasse

De DateTime-klasse bevat informatie over zowel datum als tijd. Net als een datumobject gaat datetime ervan uit dat de huidige Gregoriaanse kalender in beide richtingen is uitgebreid; Net als bij een tijdobject gaat datetime ervan uit dat elke dag precies 3600*24 seconden bevat.

Constructor-syntaxis:

class datetime.datetime(jaar, maand, dag, uur=0, minuut=0, seconde=0, microseconde=0, tzinfo=Geen, *, vouw=0)

De argumenten jaar, maand en dag zijn verplicht. tzinfo kan Geen zijn, alle attributen moeten een geheel getal zijn in het volgende bereik:

  • MINYAAR <= jaar <= MAXJAAR
  • 1 <= maand <= 12
  • 1 <= dag <= aantal dagen in de opgegeven maand en jaar
  • 0 <= uur < 24
  • 0 <= minuut < 60
  • 0 <= seconde < 60
  • 0 <= microseconde < 1000000
  • invouwen [0, 1]

Opmerking – Als u een ander argument dan een geheel getal doorgeeft, wordt er een TypeError gegenereerd, en als u argumenten buiten het bereik doorgeeft, wordt ValueError verhoogd.

DateTime-object dat DateTime in Python vertegenwoordigt

Python3




# Python program to> # demonstrate datetime object> from> datetime>import> datetime> # Initializing constructor> a>=> datetime(>1999>,>12>,>12>)> print>(a)> # Initializing constructor> # with time parameters as well> a>=> datetime(>1999>,>12>,>12>,>12>,>12>,>12>,>342380>)> print>(a)>

>

>

Uitgang:

1999-12-12 00:00:00 1999-12-12 12:12:12.342380>

Krijg jaar, maand, uur, minuut en tijdstempel

Nadat u een DateTime-object heeft gemaakt, kunnen de attributen ervan ook afzonderlijk worden afgedrukt.

Python3




from> datetime>import> datetime> a>=> datetime(>1999>,>12>,>12>,>12>,>12>,>12>)> print>(>'year ='>, a.year)> print>(>'month ='>, a.month)> print>(>'hour ='>, a.hour)> print>(>'minute ='>, a.minute)> print>(>'timestamp ='>, a.timestamp())>

>

>

Uitgang:

year = 1999 month = 12 hour = 12 minute = 12 timestamp = 945000732.0>

Huidige datum en tijd

U kunt de huidige datum en tijd afdrukken met de functie Datetime.now(). De functie now() retourneert de huidige lokale datum en tijd.

Python3




from> datetime>import> datetime> # Calling now() function> today>=> datetime.now()> print>(>'Current date and time is'>, today)>

>

>

Uitgang:

Current date and time is 2019-10-25 11:12:11.289834>

Converteer Python Datetime naar String

We kunnen Datetime naar string in Python converteren met behulp van de datumtijd.strftime en datetime.isoformat-methoden.

Python3




from> datetime>import> datetime as dt> # Getting current date and time> now>=> dt.now()> string>=> dt.isoformat(now)> print>(string)> print>(>type>(string))>

>

>

Uitvoer

2021-08-19T18:13:25.346259>

Lijst met datetime-klassemethoden

Functienaam

Beschrijving

astijdzone() Retourneert het DateTime-object dat tijdzone-informatie bevat.
combineren() Combineert de datum- en tijdobjecten en retourneert een DateTime-object
ctijd() Retourneert een tekenreeksweergave van datum en tijd
datum() Retourneert het klasseobject Date
vanisoformat() Retourneert een datetime-object uit de tekenreeksweergave van de datum en tijd
vanordinaal() Retourneert een datumobject uit de proleptische Gregoriaanse rangtelwoord, waarbij 1 januari van jaar 1 rangtelwoord 1 heeft. Het uur, de minuut, de seconde en de microseconde zijn 0
vantijdstempel() Retourdatum en -tijd van POSIX-tijdstempel
isocalendar() Retourneert een jaar, week en weekdag
isoformaat() Retourneert de tekenreeksweergave van datum en tijd
isoweekdag() Retourneert de dag van de week als geheel getal, waarbij maandag 1 is en zondag 7
nu() Retourneert de huidige lokale datum en tijd met de parameter tz
vervangen() Wijzigt de specifieke kenmerken van het DateTime-object
strftijd() Retourneert een tekenreeksweergave van het DateTime-object met de opgegeven notatie
strptijd() Retourneert een DateTime-object dat overeenkomt met de datumtekenreeks
tijd() Retourneert het klasseobject Tijd
tijdsverloop() Retourneert een object van het type time.struct_time
tijdtz() Retourneert het klasseobject Tijd
Vandaag() Retourneer lokale DateTime met tzinfo als Geen
toordinaal() Retourneert de proleptische Gregoriaanse rangtelwoord van de datum, waarbij 1 januari van jaar 1 rangtelwoord 1 heeft
tznaam() Retourneert de naam van de tijdzone
utcvantijdstempel() Retourneer UTC van POSIX-tijdstempel
utcoffset() Retourneert de UTC-offset
ut weet() Retourneer de huidige UTC-datum en -tijd
weekdag() Retourneert de dag van de week als geheel getal, waarbij maandag 0 is en zondag 6

Python Timedelta-klasse

De Python timedelta-klasse wordt gebruikt voor het berekenen van verschillen in datums en kan ook worden gebruikt voor datummanipulaties in Python. Het is een van de gemakkelijkste manieren om datummanipulaties uit te voeren.

Constructor-syntaxis:

class datetime.timedelta(dagen=0, seconden=0, microseconden=0, milliseconden=0, minuten=0, uren=0, weken=0)
Retourzending: Datum

Voeg dagen toe aan het DateTime-object

Demonstratie van de timedelta-functie

Python3




from> datetime>import> datetime, timedelta> # Using current time> ini_time_for_now>=> datetime.now()> # printing initial_date> print>(>'initial_date'>,>str>(ini_time_for_now))> # Calculating future dates> # for two years> future_date_after_2yrs>=> ini_time_for_now>+> timedelta(days>=>730>)> future_date_after_2days>=> ini_time_for_now>+> timedelta(days>=>2>)> # printing calculated future_dates> print>(>'future_date_after_2yrs:'>,>str>(future_date_after_2yrs))> print>(>'future_date_after_2days:'>,>str>(future_date_after_2days))>

>

>

Uitgang:

initial_date 2019-10-25 12:01:01.227848 future_date_after_2yrs: 2021-10-24 12:01:01.227848 future_date_after_2days: 2019-10-27 12:01:01.227848>

Verschil tussen twee datums en tijden

Datum- en tijdverschillen kunnen ook worden gevonden met behulp van deze klasse.

Python3




# Timedelta function demonstration> from> datetime>import> datetime, timedelta> # Using current time> ini_time_for_now>=> datetime.now()> # printing initial_date> print>(>'initial_date'>,>str>(ini_time_for_now))> # Some another datetime> new_final_time>=> ini_time_for_now>+> > >timedelta(days>=>2>)> # printing new final_date> print>(>'new_final_time'>,>str>(new_final_time))> # printing calculated past_dates> print>(>'Time difference:'>,>str>(new_final_time>-> >ini_time_for_now))>

>

>

Uitgang:

initial_date 2019-10-25 12:02:32.799814 new_final_time 2019-10-27 12:02:32.799814 Time difference: 2 days, 0:00:00>

Bewerkingen ondersteund door Timedelta Class

Exploitant

Beschrijving

Optelling (+) Voegt twee timedelta-objecten toe en retourneert deze
Aftrekken (-) Trekt twee tijddelta-objecten af ​​en retourneert deze
Vermenigvuldiging (*) Vermenigvuldigt timedelta-object met float of int
Divisie (/) Verdeelt het timedelta-object met float of int
Verdieping (//) Verdeelt het timedelta-object met float of int en retourneert de int of floor-waarde van de uitvoer
Module (%) Verdeelt twee timedelta-objecten en retourneert de rest
+(tijddelta) Retourneert hetzelfde timedelta-object
-(tijddelta) Retourneert de resultante van -1*timedelta
abs(tijddelta) Geeft de +(timedelta) terug als timedelta.days> 1=0, anders retourneert -(timedelta)
str(tijddelta) Retourneert een tekenreeks in de vorm (+/-) dag[s], HH:MM:SS.UUUUUU
repr(tijddelta) Retourneert de tekenreeksrepresentatie in de vorm van de constructoraanroep

Formatteer DateTime in Python

Het formatteren van DateTime kan zeer noodzakelijk zijn, omdat de datumweergave van plaats tot plaats kan verschillen. In sommige landen kan het jjjj-mm-dd zijn en in andere landen kan het dd-mm-jjjj zijn. Voor het formatteren van Python Datetime kunnen strptime- en strftime-functies worden gebruikt.

Python Datetime strftime

Een strftime()-methode converteert het opgegeven datum-, tijd- of DateTime-object naar de tekenreeksrepresentatie van het opgegeven formaat.

Python Datetime-indeling

Python-programma om de strftime()-functie te demonstreren

Python3




from> datetime>import> datetime as dt> # Getting current date and time> now>=> dt.now()> print>(>'Without formatting'>, now)> # Example 1> s>=> now.strftime(>'%A %m %-Y'>)> print>(>' Example 1:'>, s)> # Example 2> s>=> now.strftime(>'%a %-m %y'>)> print>(>' Example 2:'>, s)> # Example 3> s>=> now.strftime(>'%-I %p %S'>)> print>(>' Example 3:'>, s)> # Example 4> s>=> now.strftime(>'%H:%M:%S'>)> print>(>' Example 4:'>, s)>

>

>

Uitvoer

Without formatting 2021-08-19 18:16:25.881661 Example 1: Thursday 08 2021 Example 2: Thu 8 21 Example 3: 6 PM 25 Example 4: 18:16:25>

Opmerking: Voor meer informatie, zie strftime() methode .

Python DateTime strptime

De strptime() maakt een DateTime-object van de gegeven string.

Voorbeeld: DateTime-strptime

Python3




# import datetime module from datetime> from> datetime>import> datetime> > # consider the time stamps from a list in string> # format DD/MM/YY H:M:S.micros> time_data>=> [>'25/05/99 02:35:8.023'>,>'26/05/99 12:45:0.003'>,> >'27/05/99 07:35:5.523'>,>'28/05/99 05:15:55.523'>]> > # format the string in the given format : day/month/year> # hours/minutes/seconds-micro seconds> format_data>=> '%d/%m/%y %H:%M:%S.%f'> > # Using strptime with datetime we will format string> # into datetime> for> i>in> time_data:> >print>(datetime.strptime(i, format_data))>

>

Java is nul

>

Uitvoer

1999-05-25 02:35:08.023000 1999-05-26 12:45:00.003000 1999-05-27 07:35:05.523000 1999-05-28 05:15:55.523000>

Python DateTime.tzinfo()

De datetime.now() functie bevat geen informatie over tijdzones. Het maakt alleen gebruik van de huidige systeemtijd. Tzinfo is een abstracte basisklasse in Python. Het kan niet direct worden geïnstantieerd. Een concrete subklasse moet uit deze abstracte klasse voortkomen en de daarin aangeboden methoden implementeren.

Lijst met Python DateTime.tzinfo()-objecten

Functienaam

Beschrijving

dst() Retourneert tzinfo.dst() is tzinfo is niet Geen
vanutc() Het doel van deze functie is het aanpassen van de datum-tijdgegevens,
een gelijkwaardige DateTime retourneren in de lokale tijd van zichzelf.
tznaam() Retourneert tzinfo.tzname() is tzinfo is niet Geen
utcoffset() Retourneert tzinfo.utcffsets() is tzinfo is niet Geen

Voorbeeld

De tzinfo-klasse-instantie kan worden geleverd aan de DateTime- en time-objectconstructors. Het wordt gebruikt in scenario's zoals het converteren van lokale tijd naar UTC of het rekening houden met zomertijd.

Python3




import> datetime as dt> from> dateutil>import> tz> tz_string>=> dt.datetime.now(dt.timezone.utc).astimezone().tzname()> print>(>'datetime.now() :'>, tz_string)> NYC>=> tz.gettz(>'Europe / Berlin'>)> dt1>=> dt.datetime(>2022>,>5>,>21>,>12>,>0>)> dt2>=> dt.datetime(>2022>,>12>,>21>,>12>,>0>, tzinfo>=>NYC)> print>(>'Naive Object :'>, dt1.tzname())> print>(>'Aware Object :'>, dt2.tzname())>

>

>

Uitgang:

datetime.now() : IST Naive Object : None Aware Object : None>

Python DateTime-tijdzone

Tijdzones in DateTime kunnen worden gebruikt als u de tijd wilt weergeven volgens de tijdzone van een specifieke regio. Dit kan gedaan worden met behulp van de pytz-module van Python. Deze module bedient de functionaliteiten voor datum-tijdconversie en helpt gebruikers bij het bedienen van internationale klantenbestanden.

Python3




from> datetime>import> datetime> from> pytz>import> timezone> format> => '%Y-%m-%d %H:%M:%S %Z%z'> # Current time in UTC> now_utc>=> datetime.now(timezone(>'UTC'>))> print>(now_utc.strftime(>format>))> timezones>=> [>'Asia/Kolkata'>,>'Europe/Kiev'>,>'America/New_York'>]> for> tzone>in> timezones:> ># Convert to Asia/Kolkata time zone> >now_asia>=> now_utc.astimezone(timezone(tzone))> >print>(now_asia.strftime(>format>))>

>

>

Uitvoer

2021-08-19 18:27:28 UTC+0000 2021-08-19 23:57:28 IST+0530 2021-08-19 21:27:28 EEST+0300 2021-08-19 14:27:28 EDT-0400>