Săgeată pentru o dată și o oră mai bună în Python

Manipularea datei și a timpului este un scenariu comun în orice limbaj de programare. Fără ajutorul unei biblioteci la îndemână, poate deveni un loc de muncă obositor care necesită eforturi suficiente. Să aruncăm o privire la Săgeată bibliotecă, care este puternic inspirată de bibliotecile Python utilizate în mod obișnuit Moment.js și Cereri. Arrow oferă o abordare prietenoasă pentru manipularea manipulării datei și timpului, a creației etc.. 

Din documentația oficială:

Arrow este o bibliotecă Python care oferă o abordare sensibilă, prietenoasă cu oamenii, pentru crearea, manipularea, formatarea și conversia datelor, timpilor și marcilor de timp. Acesta implementează și actualizează tipul datetime-ului, conectând lacunele în funcționalitate și oferă un API modul inteligent care suportă multe scenarii de creație comune.

Noțiuni de bază cu săgeată

Pentru a începe cu Săgeată bibliotecă, trebuie să aveți Python instalat pe sistemul dvs. De asemenea, asigurați-vă că aveți țâfnă, Managerul de pachete Python, instalat în mediul dvs..

Acum, instalați Arrow folosind pip.

pip install arrow

Veți învăța cum să utilizați Arrow în proiectul dvs. de dezvoltare de aplicații web pentru manipularea și crearea de date și timp, etc. Să începem prin crearea unei aplicații web utilizând Python Flask.

Folosind pip, instalați Python Flask, dacă nu este deja instalat.

pip instalare Flask

Creați un fișier numit app.py care ar fi fișierul de aplicație Python. Adăugați următorul cod la app.py:

(__name__) = app.route ("/") def hello (): retur "Bine ați venit în Arrow Library" dacă __name__ == '__main__': app.run

Salvați modificările de mai sus și executați aplicația utilizând python app.py, și ar trebui să aveți aplicația care rulează pe http: // localhost: 5000 /.

Ora locală la Ora UTC și vice versa

Unul dintre scenariile cele mai comune cu care vă confruntați într-un proiect de dezvoltare a aplicațiilor web este de a aduce ora locală, transformând ora locală în ora UTC (Coordinated Universal Time) și apoi convertirea timpului UTC în ora locală pentru afișarea într-o aplicație web bazată pe timp zona. 

A folosi Săgeată în proiectul Python Flack, trebuie să importați biblioteca în app.py.

săgeată de import

Odată ce este importat, puteți folosi imediat obiectul săgeată pentru manipularea și crearea de date și timp.

Să creăm un traseu și o metodă pentru a prelua ora locală. Adăugați un traseu numit getLocalTime și metoda corespunzătoare. Arrow oferă o metodă numită acum pentru a obține ora locală curentă. Folosește acum pentru a obține ora locală și pentru a reveni la data de care aveți nevoie pentru ao converti în format ISO. Iată cum arată codul:

@ app.route ("/ getLocalTime") def getLocalTime (): local = arrow.now () retur local.isoformat ()

Salvați modificările de mai sus și reporniți serverul. Punctați browser-ul dvs. la http: // localhost: 5000 / getLocalTime și ar trebui să puteți vizualiza ora locală.

În mod normal, aveți tendința de a salva data și ora în format UTC în baze de date și de a afișa ora locală prin conversia timpului UTC la ora locală. Deci, haideți să aruncăm o privire asupra modului de conversie a timpului local în timpul UTC pentru stocarea bazei de date. 

Creați o rută și o metodă numită getCurrentUtcTime. Pentru a obține ora curentă UTC, săgeata oferă o metodă numită utcnow. Puteți să-l utilizați pentru a obține ora curentă UTC după cum se arată:

@ app.route ("/ getCurrentUtcTime") def getCurrentUtcTime (): utc = arrow.utcnow () retur utc.isoformat ()

Metoda de mai sus primește ora curentă UTC. Dacă aveți deja o dată și o oră pentru care doriți să obțineți UTC, săgeata oferă o la metodă pentru a face acest lucru. Utilizarea la , trebuie să furnizați fusul orar la care aveți nevoie data și ora pentru a fi convertite. Deci, iată cum puteți converti ora locală la UTC:

@ app.route ("/ getUtcTime") def getUtcTime (): local = arrow.now () utc = local.to ('utc') returnează utc.isoformat

Când salvați data și ora în baza de date, salvați-o ca marcă de timp. Pentru a obține marca de timp UTC, trebuie să apelați .timestamp-ul atributul obiectului.

arrow.now (). timestamp

Nu puteți afișa marcajul de timp UTC atunci când afișați date pe partea clientului. Trebuie să convertiți marcajul temporal UTC la ora locală. Pentru a face acest lucru, mai întâi trebuie să creați obiectul săgeată folosind arrow.get metodă. Apoi puteți folosi arrow.to metoda de conversie a timpului UTC la ora locală. Iată cum arată codul:

@ app.route ("/ convertUtcToLocal") def convertUtcToLocal (): local = arrow.now () utcTimeStamp = local.to ('utc') timestamp localDateObj = arrow.get (utcTimeStamp) localDateObj.isoformat ()

Salvați modificările de mai sus și reporniți serverul. Punctați browser-ul dvs. la http: // localhost: 5000 / convertUtcToLocal și ar trebui să puteți vizualiza ora locală regăsită prin conversia timpisului UTC la ora locală.

Manipularea datei și orei

De cele mai multe ori, este necesar să manipulați data și ora adăugând sau eliminând câteva ore, minute etc. la obiectul datetime. Arrow oferă două metode numite a inlocui și schimb pentru manipularea obiectului datetime.

Să presupunem că aveți un obiect datetime săgeată. Acum doriți să înlocuiți câteva lucruri în obiectul datetime. Vrei să modifici minutul și a doua a datetimei.

>>> localDateTime = arrow.now () >>> localDateTime  

Pentru a înlocui minutele și secundele localDateTime, puteți utiliza a inlocui metoda oferită de biblioteca săgeată. Iată cum arată sintaxa:

>>> localDateTime.replace (minute = 01, secunde = 01)  

Dacă doriți să măriți timpul de date printr-un anumit parametru, cum ar fi zi, oră, săptămână etc., puteți utiliza funcția schimb metodă. Tot ce trebuie să faceți este să furnizați parametrul prin care trebuie să schimbați data. Să presupunem că trebuie să creștem data o dată cu o zi. Codul ar fi astfel:

>>> localDateTime = arrow.now () >>> localDateTime  >>> localDateTime.shift (zile = +1)  

Pentru a diminua data cu două zile, codul ar fi:

>>> localDateTime.shift (zile = -2)  

Formatarea datei cu ajutorul săgeții

Pentru a formata datatimea ca pe formatul personalizat, puteți utiliza format metoda furnizată de săgeată. 

De exemplu, pentru a formata data la AAAA-LL-ZZ format, trebuie să utilizați următorul cod:

>>> localDateTime = arrow.now () >>> localDateTime  >>> localDateTime.format ('AAAA-MM-DD') u'2017-09-29 ' 

În mod similar, pentru a formata data la AAAA-MM-DD HH: mm: ss format, trebuie să utilizați următorul cod:

>>> localDateTime  >>> localDateTime.format ('AAAA-MM-DD HH: mm: ss') u'2017-09-29 08:32:28 ' 

Reprezentarea DateTime umane

Arrow oferă o metodă numită umaniza pentru a reprezenta data într-o reprezentare prietenoasă cu oamenii. De cele mai multe ori, utilizatorul trebuie să știe cât timp a trecut de la un moment dat. Puteți utiliza funcția umaniza metodă pentru a arăta utilizatorului cât timp a fost de atunci. Iată câteva exemple de cod:

>>> currentDate = arrow.now () >>> currentDate  >>> currentDate.humanize () u'just now ' 

După cum se vede în codul de mai sus, dacă utilizați Humanize pentru a reprezenta cât timp a fost de la data curentă, ar arăta rezultatul de mai sus.

Acum, să aruncăm o privire la o dată anterioară.

>>> mai devreme = arrow.now () schimbare (zile = -3) >>> earlierDate  >>> earlierDate.humanize () u'3 zile în urmă ' 

După cum se vede în codul de mai sus, tocmai ați folosit umaniza cu o dată anterioară, și arată numărul relativ de zile cu date respective.

Puteți utiliza, de asemenea umaniza pentru a afișa numărul relativ de zile între două date. De exemplu:

>>> mai târziuData = arrow.now () schimbare (zile = + 3) >>> mai târziuData  >>> mai devreme = arrow.now () schimbare (zile = -3) >>> earlierDate  >>> earlierDate.humanize (laterDate) u'5 zile în urmă ' 

După cum se vede în exemplul de mai sus, ați creat o dată ulterioară și o dată anterioară prin schimbarea numărului de zile. Apoi ați verificat numărul relativ de zile de la earlierDate la laterDate folosind umaniza , care a imprimat mesajul de mai sus.

Conversia la o altă fus orar

Arrow oferă o convertit metoda de conversie a timpului local într-o fus orar preferată. De exemplu, pentru a converti ora locală la ora UTC, puteți utiliza următoarea comandă:

>>> arrow.now () la ('utc')  

Pentru a transforma ora UTC în fusul orar local, puteți utiliza următorul cod:

>>> utcTime = arrow.now () pentru a ('utc') >>> utcTime  >>> utcTime.to ('local')  

Pentru a converti ora UTC la un anumit fus orar, puteți specifica fusul orar și veți obține timpul din acel fus orar. De exemplu:

>>> utcTime.to ('America / New_York')  

În codul de mai sus, ați specificat ora UTC care trebuie convertită la America / New_York și, de asemenea, puteți furniza orice fus orar în care doriți să fie convertită UTC.

Înfășurați-o

În acest tutorial, ați văzut cum să utilizați Arrow, o bibliotecă Python pentru manipularea datei și timpului, crearea și formatarea. Din punct de vedere al dezvoltatorului, biblioteca Arrow pare să fie o potrivire completă pentru manipulările datei și timpului când este utilizată într-un proiect Python.

În plus, nu ezitați să vedeți ce avem la dispoziție pentru vânzare și pentru a studia în piața Envato și nu ezitați să întrebați întrebări și să furnizați feedback-ul dvs. valoros utilizând feedul de mai jos.

Aveți vreo experiență anterioară utilizând biblioteca Arrow? Care este punctul dvs. de vedere? Ați întâmpinat probleme în timpul utilizării bibliotecii? Spuneți-ne gândurile și sugestiile în comentariile de mai jos. 

Cod