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:
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:
# 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:
# 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ì?).
# 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?
# 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
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
GO TO FULL VERSION