În Python, data și ora nu sunt tipuri de date proprii, ci un modul numit DateTime în Python poate fi importat pentru a funcționa atât cu data, cât și cu ora. Modulul Python Datetime este integrat în Python, deci nu este nevoie să îl instalați extern.
În acest articol, vom explora Cum DateTime în Python funcționează și care sunt principalele clase ale modulului DateTime în Python.
Cuprins
- Modulul Python DateTime
- Clasa Python Date
- Clasa Python Time
- Clasa Python Datetime
- Clasa Python Timedelta
- Python DateTime.tzinfo()
- Fusul orar Python DateTime
Modulul Python DateTime
Python Datetime modulul furnizează cursuri pentru a lucra cu data și ora. Aceste clase oferă mai multe funcții pentru a se ocupa de date, ore și intervale de timp. Date și DateTime sunt un obiect în Python, așa că atunci când le manipulați, manipulați obiecte și nu șiruri de caractere sau marcaje de timp.
Modulul DateTime este clasificat în 6 clase principale -
- Data – O dată naivă idealizată, presupunând că actualul calendar gregorian a fost și va fi întotdeauna în vigoare. Atributele sale sunt anul, luna și ziua. te poti referi la - Python DateTime – Clasa de date
- timp – Un timp idealizat, independent de orice zi anume, presupunând că fiecare zi are exact 24*60*60 de secunde. Atributele sale sunt oră, minut, secundă, microsecundă și tzinfo. Vă puteți referi la - Python DateTime – Clasa de timp
- data-ora – Este o combinație de dată și oră împreună cu atributele an, lună, zi, oră, minut, secundă, microsecundă și tzinfo. Vă puteți referi la - Python DateTime – Clasa DateTime
- delta timpului – O durată care exprimă diferența dintre două instanțe de dată, oră sau dată și oră la rezoluția în microsecunde. Vă puteți referi la - Python DateTime – Clasa Timedelta
- tzinfo – Oferă obiecte de informații despre fusul orar. Vă puteți referi la - Python – datetime.tzinfo()
- fus orar – O clasă care implementează clasa de bază abstractă tzinfo ca un offset fix față de UTC (Nou în versiunea 3.2). Vă puteți referi la - Gestionarea fusului orar în Python
Clasa Python Date
Clasa de date este utilizată pentru a instanția obiecte de date în Python. Când un obiect din această clasă este instanțiat, acesta reprezintă o dată în format AAAA-LL-ZZ . Constructorul acestei clase are nevoie de trei argumente obligatorii an, lună și dată.
Sintaxă a clasei Python Date
class datetime.date(year, month, day)>
Argumentele trebuie să fie în următorul interval -
- MINYEAR <= an <= MAXYEAR
- 1 <= luna <= 12
- 1 <= zi <= numărul de zile din luna și anul dat
Notă – Dacă argumentul nu este un număr întreg, va genera o TypeError, iar dacă este în afara intervalului, o ValueError va fi generată.
Data obiect reprezentând date în Python
Inițializarea constructorului și transmiterea argumentelor în formatul an, lună și dată.
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> |
>
>
Ieșire:
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)> Obțineți data curentă
Pentru a returna data locală actuală, se folosește funcția today() a clasei de date. Funcția today() vine cu mai multe atribute (an, lună și zi). Acestea pot fi tipărite individual.
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)> |
>
>Ieșire
Today's date is 2021-08-19>
Obțineți anul, luna și data de astăzi
Putem obține atributele an, lună și dată din obiectul date folosind atributul year, month și date al clasei de date.
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)> |
>
>Ieșire
Current year: 2021 Current month: 8 Current day: 19>
Obține data din marca temporală
Putem crea obiecte date din marcaje temporale y=folosind metoda fromtimestamp(). Marca temporală este numărul de secunde de la 1 ianuarie 1970 la UTC până la o anumită dată.
Python3
from> datetime>import> datetime> # Getting Datetime from timestamp> date_time>=> datetime.fromtimestamp(>1887639468>)> print>(>'Datetime from timestamp:'>, date_time)> |
>
>Ieșire
lista de sortare java
Datetime from timestamp: 2029-10-25 16:17:48>
Convertiți data în șir
Putem converti obiectul dată într-o reprezentare șir folosind două funcții isoformat() și strftime().
Python3
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>))> |
>
>Ieșire
String Representation 2021-08-19>
Lista metodelor clasei de date
| Numele funcției | Descriere |
|---|---|
| ctime() | Returnează un șir care reprezintă data |
| dinisocalendar() | Returnează o dată corespunzătoare calendarului ISO |
| din isoformat() | Returnează un obiect dată din reprezentarea șir a datei |
| de la ordinal() | Returnează un obiect dată din ordinalul gregorian proleptic, unde 1 ianuarie a anului 1 are ordinalul 1 |
| fromtimestamp() | Returnează un obiect dată din marcajul de timp POSIX |
| izocalendar() | Returnează un tuplu an, săptămână și zi a săptămânii |
| izoformat() | Returnează reprezentarea în șir a datei |
| izoweekday() | Returnează ziua săptămânii ca un număr întreg, unde luni este 1 și duminică este 7 |
| a inlocui() | Schimbă valoarea obiectului dată cu parametrul dat |
| strftime() | Returnează o reprezentare șir a datei cu formatul dat |
| timetuple() | Returnează un obiect de tip time.struct_time |
| astăzi() | Returnează data locală curentă |
| toordinal() | Întoarceți ordinalul gregorian proleptic al datei, unde 1 ianuarie a anului 1 are ordinalul 1 |
| zi lucrătoare () | Returnează ziua săptămânii ca număr întreg, unde luni este 0 și duminică este 6 |
Clasa Python Time
Clasa de timp creează obiectul de timp care reprezintă ora locală, independent de orice zi.
Sintaxa constructorului:
clasă datetime.time(hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
Toate argumentele sunt optionale. tzinfo poate fi Niciunul, altfel toate atributele trebuie să fie întregi în următorul interval –
- 0 <= ora < 24
- 0 <= minut < 60
- 0 <= secundă < 60
- 0 <= microsecundă < 1000000
- pliază [0, 1]
Exemplul 1: obiect de timp care reprezintă timpul în Python
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> |
>
urfi javed
>
Ieșire:
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)>
Exemplul 2: obțineți ore, minute, secunde și microsecunde
După crearea unui obiect de timp, atributele acestuia pot fi de asemenea tipărite separat.
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)> |
>
>
Ieșire:
hour = 11 minute = 34 second = 56 microsecond = 0>
Exemplul 3: Convertiți obiectul Time în String
Putem converti obiectul de timp în șir folosind metoda isoformat().
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>))> |
>
>Ieșire
String Representation: 12:24:36.001212>
Lista metodelor clasei de timp
| Numele funcției | Descriere |
|---|---|
| dst() | Returnează tzinfo.dst() este tzinfo nu este Nici unul |
| din isoformat() | Returnează un obiect de timp din reprezentarea șir a timpului |
| izoformat() | Returnează reprezentarea în șir a timpului din obiectul timp |
| a inlocui() | Schimbă valoarea obiectului de timp cu parametrul dat |
| strftime() | Returnează o reprezentare șir a orei cu formatul dat |
| tzname() | Returnează tzinfo.tzname() este tzinfo nu este Niciunul |
| utcoffset() | Returnează tzinfo.utcffsets() este tzinfo nu este Niciunul |
Clasa Python Datetime
The Clasa DateTime conține informații atât despre dată, cât și despre oră. Ca un obiect data, datetime presupune calendarul gregorian curent extins în ambele direcții; ca un obiect de timp, datetime presupune că există exact 3600*24 de secunde în fiecare zi.
Sintaxa constructorului:
clasa datetime.datetime(an, lună, zi, oră=0, minut=0, secundă=0, microsecundă=0, tzinfo=Niciunul, *, fold=0)
Argumentele anului, lunii și zilei sunt obligatorii. tzinfo poate fi Nici unul, restul, toate atributele trebuie să fie un număr întreg în următorul interval -
- MINYEAR <= an <= MAXYEAR
- 1 <= luna <= 12
- 1 <= zi <= numărul de zile din luna și anul dat
- 0 <= ora < 24
- 0 <= minut < 60
- 0 <= secundă < 60
- 0 <= microsecundă < 1000000
- pliază [0, 1]
Notă – Trecerea unui argument altul decât întregul va genera o eroare de tip și trecerea argumentelor în afara intervalului va genera ValueError.
Obiect DateTime care reprezintă DateTime în Python
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)> |
>
>
Ieșire:
1999-12-12 00:00:00 1999-12-12 12:12:12.342380>
Obțineți an, lună, oră, minut și marca temporală
După crearea unui obiect DateTime, atributele acestuia pot fi de asemenea tipărite separat.
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())> |
>
>
Ieșire:
year = 1999 month = 12 hour = 12 minute = 12 timestamp = 945000732.0>
Data și ora curente
Puteți imprima data și ora curente folosind funcția Datetime.now(). Funcția now() returnează data și ora locală curentă.
Python3
from> datetime>import> datetime> # Calling now() function> today>=> datetime.now()> print>(>'Current date and time is'>, today)> |
>
>
Ieșire:
Current date and time is 2019-10-25 11:12:11.289834>
Convertiți Python Datetime în String
Putem converti Datetime în șir în Python folosind datetime.strftime și metode datetime.isoformat.
Python3
from> datetime>import> datetime as dt> # Getting current date and time> now>=> dt.now()> string>=> dt.isoformat(now)> print>(string)> print>(>type>(string))> |
>
>Ieșire
2021-08-19T18:13:25.346259>
Lista metodelor de clasă Datetime
| Numele funcției | Descriere |
|---|---|
| astimezone() | Returnează obiectul DateTime care conține informații despre fusul orar. |
| combina() | Combină obiectele dată și oră și returnează un obiect DateTime |
| ctime() | Returnează o reprezentare șir a datei și orei |
| Data() | Returnează obiectul clasei Date |
| din isoformat() | Returnează un obiect datetime din reprezentarea șir a datei și orei |
| de la ordinal() | Returnează un obiect dată din ordinalul gregorian proleptic, unde 1 ianuarie a anului 1 are ordinalul 1. Ora, minutul, secunda și microsecunda sunt 0 |
| fromtimestamp() | Data și ora de întoarcere din marcajul temporal POSIX |
| izocalendar() | Returnează un tuplu an, săptămână și zi a săptămânii |
| izoformat() | Returnează reprezentarea în șir a datei și orei |
| izoweekday() | Returnează ziua săptămânii ca număr întreg, unde luni este 1 și duminică este 7 |
| acum() | Returnează data și ora locală curentă cu parametrul tz |
| a inlocui() | Modifică atributele specifice ale obiectului DateTime |
| strftime() | Returnează o reprezentare șir a obiectului DateTime cu formatul dat |
| strptime() | Returnează un obiect DateTime corespunzător șirului de date |
| timp() | Returnează obiectul clasei Time |
| timetuple() | Returnează un obiect de tip time.struct_time |
| timetz() | Returnează obiectul clasei Time |
| astăzi() | Returnează DateTime local cu tzinfo ca Nici unul |
| toordinal() | Întoarceți ordinalul gregorian proleptic al datei, unde 1 ianuarie a anului 1 are ordinalul 1 |
| tzname() | Returnează numele fusului orar |
| utcfromtimestamp() | Întoarceți UTC de la marcajul de timp POSIX |
| utcoffset() | Returnează decalajul UTC |
| utcnow() | Returnează data și ora UTC curentă |
| zi lucrătoare () | Returnează ziua săptămânii ca număr întreg, unde luni este 0 și duminică este 6 |
Clasa Python Timedelta
Clasa Python timedelta este utilizată pentru calcularea diferențelor de date și, de asemenea, poate fi folosită pentru manipulări de date în Python. Este una dintre cele mai simple moduri de a efectua manipulări ale datei.
Sintaxa constructorului:
clasa datetime.timedelta(zile=0, secunde=0, microsecunde=0, milisecunde=0, minute=0, ore=0, săptămâni=0)
Returnări: Data
Adăugați zile la obiectul DateTime
Demonstrația funcției timedelta
Python3
bfs și dfs
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))> |
>
>
Ieșire:
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>
Diferența dintre două date și ore
Diferențele de dată și oră pot fi găsite și folosind această clasă.
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))> |
>
>
Ieșire:
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>
Operațiuni susținute de Timedelta Class
| Operator | Descriere |
|---|---|
| Adăugare (+) | Adaugă și returnează două obiecte timedelta |
| Scădere (-) | Scăde și returnează două obiecte timedelta |
| Înmulțire (*) | Înmulțește obiectul timedelta cu float sau int |
| Divizia (/) | Împarte obiectul timedelta cu float sau int |
| Împărțire etaj (//) | Împarte obiectul timedelta cu float sau int și returnează valoarea int of floor a ieșirii |
| Modul (%) | Împarte două obiecte timedelta și returnează restul |
| +(delta timpului) | Returnează același obiect timedelta |
| -(delta timpului) | Returnează rezultatul lui -1*timedelta |
| abs (delta timpului) | Returnează +(timedelta) dacă timedelta.days> 1=0 altfel returnează -(timedelta) |
| str(timedelta) | Returnează un șir sub forma (+/-) zi[i], HH:MM:SS.UUUUUU |
| repr(timedelta) | Returnează reprezentarea șirului sub forma apelului constructorului |
Formatați DateTime în Python
Formatarea DateTime poate fi foarte necesară deoarece reprezentarea datei poate diferi de la un loc la altul. În unele țări, poate fi aaaa-mm-zz, iar în alte țări, poate fi zz-mm-aaaa. Pentru a formata Python Datetime pot fi folosite funcțiile strptime și strftime.
Python Datetime strftime
O metodă strftime() convertește data, ora sau obiectul DateTime date în reprezentarea șir a formatului dat.
Format Python Datetime
Program Python pentru a demonstra funcția strftime().
Python3
sql selectați ca
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)> |
>
>Ieșire
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>
Notă: Pentru mai multe informații, consultați metoda strftime(). .
Python DateTime strptime
strptime() creează un obiect DateTime din șirul dat.
Exemplu: 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))> |
>
>Ieșire
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()
The funcția datetime.now(). nu conține informații despre fusurile orare. Utilizează doar ora curentă a sistemului. Tzinfo este o clasă de bază abstractă în Python. Nu poate fi instanțiat direct. O subclasă concretă trebuie să derive din această clasă abstractă și să implementeze metodele oferite de aceasta.
Lista de obiecte Python DateTime.tzinfo().
| Numele funcției | Descriere |
|---|---|
| dst() | Returnează tzinfo.dst() este tzinfo nu este Nici unul |
| fromutc() | Scopul acestei funcții este de a ajusta datele date și oră, returnarea unui DateTime echivalent în ora locală a lui. |
| tzname() | Returnează tzinfo.tzname() este tzinfo nu este Niciunul |
| utcoffset() | Returnează tzinfo.utcffsets() este tzinfo nu este Niciunul |
Exemplu
Instanța clasei tzinfo poate fi furnizată constructorilor de obiecte DateTime și time. Este folosit în scenarii precum conversia orei locale în UTC sau contabilizarea orei de vară.
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())> |
>
>
Ieșire:
datetime.now() : IST Naive Object : None Aware Object : None>
Fusul orar Python DateTime
Fusele orare din DateTime pot fi utilizate în cazul în care s-ar putea dori să afișați ora în funcție de fusul orar al unei anumite regiuni. Acest lucru se poate face folosind modulul pytz de Python. Acest modul servește funcționalităților de conversie dată-oră și ajută utilizatorii care deservesc bazele internaționale de clienți.
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>))> |
>
>Ieșire
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>