logo

Modulul Python datetime

Î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

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>