Arrow per Better Date and Time in Python

La manipolazione di data e ora è uno scenario comune in qualsiasi linguaggio di programmazione. Senza l'aiuto di una comoda libreria, può diventare un lavoro noioso che richiede uno sforzo sufficiente. Diamo un'occhiata al Freccia libreria, che è fortemente ispirata dalle librerie Python utilizzate di frequente Moment.js e richieste. Arrow fornisce un approccio amichevole per la gestione della manipolazione di data e ora, creazione, ecc. 

Dalla documentazione ufficiale:

Arrow è una libreria Python che offre un approccio sensibile e umano per la creazione, la manipolazione, la formattazione e la conversione di date, ore e timestamp. Implementa e aggiorna il tipo datetime, colmando le lacune nelle funzionalità e fornisce un'API modulo intelligente che supporta molti scenari di creazione comuni.

Iniziare con Arrow

Per iniziare con il Freccia libreria, devi avere Python installato sul tuo sistema. Assicurati anche di avere seme, Gestore pacchetti Python, installato nel tuo ambiente.

Ora installa Arrow usando pip.

pip installare freccia

Imparerai come usare Arrow nel tuo progetto di sviluppo di applicazioni web per la manipolazione di data e ora, la creazione, ecc. Iniziamo quindi creando un'applicazione web usando Python Flask.

Usando pip, installa Python Flask, se non è già installato.

pip installare Flask

Crea un file chiamato app.py quale sarebbe il file dell'applicazione Python. Aggiungere il seguente codice a app.py:

da flask import Flask app = Flask (__ name__) @ app.route ("/") def hello (): restituisce "Welcome in Arrow Library" se __name__ == '__main__': app.run ()

Salvare le modifiche precedenti ed eseguire l'applicazione utilizzando python app.py, e dovresti avere l'applicazione in esecuzione su http: // localhost: 5000 /.

Ora locale per ora UTC e Vice Versa

Uno degli scenari più comuni che si incontrano in un progetto di sviluppo di applicazioni Web è il recupero dell'ora locale, la conversione dell'ora locale in UTC (Coordinated Universal Time) e la conversione dell'ora UTC in ora locale per la visualizzazione in un'applicazione Web in base al tempo zona. 

Usare Freccia nel tuo progetto Python Flask, devi importare la libreria in app.py.

freccia di importazione

Una volta importato, puoi immediatamente utilizzare l'oggetto freccia per la manipolazione e la creazione di data e ora.

Creiamo un percorso e un metodo per recuperare l'ora locale. Aggiungi un percorso chiamato GetLocalTime e il suo metodo corrispondente. Arrow fornisce un metodo chiamato adesso per ottenere l'ora locale corrente. Utilizzare il adesso metodo per ottenere l'ora locale e per restituire la data è necessario convertirlo in formato ISO. Ecco come appare il codice:

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

Salvare le modifiche precedenti e riavviare il server. Puntare il browser su http: // localhost: 5000 / getLocalTime e si dovrebbe essere in grado di visualizzare l'ora locale.

Normalmente, si tende a salvare la data e l'ora nel formato UTC nei database e visualizzare l'ora locale convertendo l'ora UTC in ora locale. Quindi diamo un'occhiata a come convertire l'ora locale in ora UTC per l'archiviazione del database. 

Crea un percorso e un metodo chiamato getCurrentUtcTime. Per ottenere l'ora UTC corrente, la freccia fornisce un metodo chiamato utcnow. Puoi usarlo per ottenere l'ora UTC attuale come mostrato:

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

Il metodo sopra riportato ottiene l'ora UTC corrente. Se si dispone già di una data e un'ora per cui si desidera ottenere l'UTC, la freccia fornisce a a metodo per farlo. Usando il a metodo, è necessario fornire il fuso orario a cui è necessario la data e l'ora da convertire. Quindi, ecco come puoi convertire l'ora locale in UTC:

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

Quando si salva la data e l'ora nel database, lo si salva come timestamp. Per ottenere il timestamp UTC, è necessario chiamare il .timestamp attributo dell'oggetto.

arrow.now (). timestamp

Non è possibile visualizzare la data / ora UTC durante la visualizzazione dei dati sul lato client. È necessario convertire la data / ora UTC in ora locale. Per fare ciò, devi prima creare l'oggetto freccia usando il arrow.get metodo. Quindi puoi usare il arrow.to metodo per convertire l'ora UTC in ora locale. Ecco come appare il codice:

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

Salvare le modifiche precedenti e riavviare il server. Puntare il browser su http: // localhost: 5000 / convertUtcToLocal e dovresti essere in grado di visualizzare l'ora locale recuperata convertendo il timestamp UTC in ora locale.

Manipolazione di data e ora

Nella maggior parte dei casi, è necessario modificare la data e l'ora aggiungendo o rimuovendo alcune ore, minuti, ecc. Sull'oggetto datetime. Arrow fornisce due metodi chiamati sostituire e cambio per manipolare l'oggetto datetime.

Supponiamo che tu abbia un oggetto datetime a freccia. Ora si desidera sostituire alcune cose nell'oggetto datetime. Si desidera modificare il minuto e il secondo del datetime.

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

Per sostituire il minuto e il secondo del LocalDateTime, puoi usare il sostituire metodo fornito dalla libreria di frecce. Ecco come appare la sintassi:

>>> localDateTime.replace (minuto = 01, secondo = 01)  

Se si desidera incrementare il datetime con un determinato parametro come giorno, ora, settimana, ecc., È possibile utilizzare il comando cambio metodo. Tutto ciò che devi fare è fornire il parametro utilizzando il quale è necessario spostare il datetime. Diciamo che è necessario incrementare il datetime di un giorno. Il codice sarebbe come questo:

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

Per decrementare il datetime di due giorni, il codice sarebbe come:

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

Formattare la data usando la freccia

Per formattare il datetime secondo il tuo formato personalizzato, puoi usare il formato metodo fornito dalla freccia. 

Ad esempio, per formattare datetime a AAAA-MM-DD formato, è necessario utilizzare il seguente codice:

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

Allo stesso modo, per formattare datetime a AAAA-MM-GG HH: mm: ss formato, è necessario utilizzare il seguente codice:

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

Rappresentazione data-ora umana

Arrow fornisce un metodo chiamato umanizzare rappresentare il datetime in una rappresentazione umana. La maggior parte delle volte, l'utente deve sapere quanto tempo è passato da un momento particolare. Puoi usare il umanizzare metodo per mostrare all'utente quanto tempo è passato da ora. Ecco alcuni esempi di codice:

>>> currentDate = arrow.now () >>> currentDate  >>> currentDate.humanize () stai proprio ora ' 

Come visto nel codice precedente, se usi humanize per rappresentare quanto tempo è passato dall'orario attuale, mostrerebbe il risultato sopra.

Ora diamo un'occhiata a una data precedente.

>>> previousDate = arrow.now (). shift (days = -3) >>> previousDate  >>> precedenteDate.humanize () u'3 giorni fa ' 

Come visto nel codice sopra, hai appena usato il umanizzare metodo con una data precedente, e mostra il numero relativo di giorni con relativo alla data corrente.

Puoi anche usare umanizzare per mostrare il numero relativo di giorni tra due date. Per esempio:

>>> nextDate = arrow.now (). shift (days = + 3) >>> laterDate  >>> previousDate = arrow.now (). shift (days = -3) >>> previousDate  >>> previousDate.humanize (afterDate) u5 giorni fa ' 

Come visto nell'esempio precedente, hai creato una data successiva e una data precedente spostando il numero di giorni. Quindi hai controllato il numero relativo di giorni da earlierDate a data successiva usando il umanizzare metodo, che ha stampato il messaggio precedente.

Conversione in un fuso orario diverso

Arrow fornisce a convertire metodo per convertire l'ora locale in un fuso orario preferito. Ad esempio per convertire l'ora locale in ora UTC, è possibile utilizzare il seguente comando:

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

Per convertire nuovamente l'ora UTC nel fuso orario locale, puoi utilizzare il seguente codice:

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

Per convertire l'ora UTC in un fuso orario specifico, puoi specificare il fuso orario e otterrai il tempo da quel particolare fuso orario. Per esempio:

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

Nel codice precedente, hai specificato l'ora UTC da convertire in America / New_York fuso orario e allo stesso modo è possibile fornire qualsiasi fuso orario in cui si desidera convertire l'UTC.

Avvolgendolo

In questo tutorial hai visto come usare Arrow, una libreria Python per la manipolazione di data e ora, la creazione e la formattazione. Dal punto di vista dello sviluppatore, la libreria Arrow sembra essere completamente adatta per le manipolazioni di data e ora quando viene utilizzata in un progetto Python.

Inoltre, non esitare a vedere ciò che abbiamo a disposizione per la vendita e per studiare in Envato Market, e non esitare a fare domande e fornire il tuo prezioso feedback utilizzando il feed qui sotto.

Hai qualche esperienza precedente nell'uso della libreria Arrow? Qual è il tuo punto di vista? Hai riscontrato problemi durante l'utilizzo della libreria? Fateci sapere i vostri pensieri e suggerimenti nei commenti qui sotto.