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 Date-klasse
- Python Time-les
- Python Datetime-klasse
- Python Timedelta-klasse
- Python DateTime.tzinfo()
- Python DateTime-tijdzone
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>