CodeGym /Corso Java /Python SELF IT /Uso del modulo datetime

Uso del modulo datetime

Python SELF IT
Livello 39 , Lezione 1
Disponibile

1. Ottenere la data e l'ora attuali

Perché serve?

Come si sa, il tempo è denaro. E nella programmazione è anche controllo, pianificazione e automazione. Ad esempio, se vuoi avviare un task a un'ora specifica o registrare eventi (logging), hai bisogno di sapere che l'orologio sta ticchettando e come interagire con esso.

Basi di datetime

Allora, immaginiamo di aver iniziato a lavorare con la libreria datetime. A differenza della progettazione di un'astronave, è semplicissimo! Iniziamo con l'ottenere la data e l'ora attuali:

Python

from datetime import datetime

# Ottenere la data e l'ora correnti
now = datetime.now()
print("Data e ora attuali:", now)

Questo codice dice "Ehi, datetime, vogliamo sapere che ora è adesso!" E la cosa figa è che now() restituisce un oggetto datetime che contiene tutte le informazioni sull'ora attuale. Proprio come un professore che sa tutto e subito.

Ora locale e universale (UTC)

Ah, UTC — l'orario universale che ci unisce tutti senza problemi di fusi orari. Se vuoi sapere l'ora esatta su Marte (beh, quasi), allora UTC fa per te. Ecco come ottenerlo:

Python

# Ottenere l'orario corrente in formato UTC
now_utc = datetime.utcnow()
print("Data e ora correnti in UTC:", now_utc)

Ti chiedi qual è la differenza? L'ora locale tiene conto del tuo fuso orario, mentre UTC è l'ora di Greenwich, indipendente dalla posizione geografica.

Estrazione degli elementi di data e ora

A volte non ci serve tutta la data completa, ma solo alcune sue parti. È come ordinare una pizza e prendere solo il formaggio — non sempre logico, ma a volte necessario:

Python

# Estrazione delle singole parti di data e ora
year = now.year
month = now.month
day = now.day
hour = now.hour
minute = now.minute
second = now.second

print(f"Ora è {hour}:{minute}:{second} del {day}.{month}.{year}")

Così possiamo lavorare singolarmente con gli elementi di data e ora, ad esempio, per augurare buon compleanno a un collega (ma solo se lui te lo ricorda).

Esempi di utilizzo della data e ora attuali

La cosa cambia quando bisogna programmare eventi che si verificano in diverse parti del tempo. Per esempio, creiamo un semplice script che augura a tutti buon venerdì (perché chi non ama il venerdì?).

Python

# Esempio di utilizzo della data corrente per un promemoria giornaliero
if now.weekday() == 4:  # Venerdì
    print("Evviva! Oggi è venerdì, è tempo di relax!")
else:
    print("Aspetta un po', il venerdì è ancora lontano.")

Questo codice utilizza il metodo weekday(), che restituisce un numero da 0 a 6 (dove 0 è lunedì e 6 è domenica), per verificare quale giorno della settimana sia oggi e avvisarti del weekend in arrivo.

2. Lavorare con gli oggetti datetime

Non basta sapere l'ora attuale, ma anche come spostarsi da un momento all'altro per fare operazioni o confronti. Ad esempio, come calcoli quanto sei in ritardo a un incontro con i colleghi?

Python

# Esempio di calcolo della differenza temporale
from datetime import timedelta

# Creazione di una data nel passato
past_date = datetime(2023, 1, 1, 10, 0, 0)

# Calcolo della differenza tra l'ora attuale e il passato
difference = now - past_date
print(f"Dall'inizio dell'anno sono passati {difference.days} giorni e {difference.seconds // 3600} ore.")

Qui creiamo una data nel passato e la confrontiamo con quella attuale. Quanti giorni sono passati dal Capodanno? Ora lo sai!

3. Lavorare con i fusi orari

Per lavorare con i fusi orari in datetime, si utilizza la libreria pytz, che permette di convertire data e ora nel fuso orario necessario.

Esempio di utilizzo di pytz

Python

from datetime import datetime
import pytz

# Otteniamo la data e l'ora attuali in UTC
utc_now = datetime.now(pytz.utc)
print("Data e ora correnti (UTC):", utc_now)

# Conversione in un altro fuso orario (ad esempio, US/Pacific)
pacific_now = utc_now.astimezone(pytz.timezone("US/Pacific"))
print("Data e ora correnti (Pacific Time):", pacific_now)

Output:


Data e ora correnti (UTC): 2024-11-04 14:53:27.123456+00:00
Data e ora correnti (Pacific Time): 2024-11-04 06:53:27.123456-08:00
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION