Date e orari
Lavorare con date e orari
Sezione intitolata “Lavorare con date e orari”Qualunque programma reale prima o poi ha a che fare con le date: “quando è stata inviata questa email?”, “quanti giorni mancano al compleanno?”, “quanti giorni fa ho creato questo file?”. Python ha un modulo dedicato per tutto questo.
Il modulo datetime
Sezione intitolata “Il modulo datetime”Il modulo datetime offre quattro strumenti principali:
| Classe | Cosa rappresenta |
|---|---|
date |
Solo la data (anno, mese, giorno) |
time |
Solo l’orario (ore, minuti, secondi) |
datetime |
Data e orario insieme |
timedelta |
Una durata: la differenza tra due momenti |
from datetime import date, datetime, timedelta # Importa solo quello che serveLa data e l’ora di adesso
Sezione intitolata “La data e l’ora di adesso”from datetime import date, datetime
oggi = date.today() # Solo la data odiernaprint(oggi) # 2024-01-15 (formato: anno-mese-giorno)
adesso = datetime.now() # Data e orario attualiprint(adesso) # 2024-01-15 14:30:25.123456Creare una data specifica
Sezione intitolata “Creare una data specifica”from datetime import date, datetime
compleanno = date(2008, 3, 25) # anno=2008, mese=3, giorno=25print(compleanno) # 2008-03-25
capodanno = datetime(2025, 1, 1, 0, 0, 0) # anno, mese, giorno, ora, minuti, secondiprint(capodanno) # 2025-01-01 00:00:00Accedere alle singole parti di una data
Sezione intitolata “Accedere alle singole parti di una data”from datetime import datetime
adesso = datetime.now()
print(adesso.year) # Anno (es: 2024)print(adesso.month) # Mese (1-12)print(adesso.day) # Giorno (1-31)print(adesso.hour) # Ora (0-23)print(adesso.minute) # Minuti (0-59)print(adesso.second) # Secondi (0-59)Formattare una data come testo: strftime()
Sezione intitolata “Formattare una data come testo: strftime()”Per impostazione predefinita le date vengono mostrate nel formato 2024-01-15. Con strftime() puoi scegliere il formato del testo:
from datetime import datetime
adesso = datetime.now()
print(adesso.strftime("%d/%m/%Y")) # 15/01/2024 (formato italiano)print(adesso.strftime("%d %B %Y")) # 15 January 2024 (con nome del mese)print(adesso.strftime("%H:%M:%S")) # 14:30:25 (solo l'orario)print(adesso.strftime("%d/%m/%Y %H:%M")) # 15/01/2024 14:30I codici di formato principali:
| Codice | Significato | Esempio |
|---|---|---|
%Y |
Anno (4 cifre) | 2024 |
%m |
Mese (2 cifre) | 01 |
%d |
Giorno (2 cifre) | 15 |
%H |
Ora in formato 24h | 14 |
%M |
Minuti | 30 |
%S |
Secondi | 25 |
%A |
Nome del giorno (inglese) | Monday |
%B |
Nome del mese (inglese) | January |
Convertire testo in data: strptime()
Sezione intitolata “Convertire testo in data: strptime()”L’operazione inversa: prendi una stringa di testo e trasformala in un oggetto data. Devi dirle in che formato è scritta la stringa:
from datetime import datetime
testo = "25/03/2008"data = datetime.strptime(testo, "%d/%m/%Y") # Dici a Python come è formattata la stringaprint(data) # 2008-03-25 00:00:00print(data.year) # 2008Calcolare differenze tra date: timedelta
Sezione intitolata “Calcolare differenze tra date: timedelta”timedelta rappresenta una durata: un certo numero di giorni, ore, minuti, ecc. Puoi aggiungerla o sottrarla a una data:
from datetime import date, timedelta
oggi = date.today()
# Tra quanti giorni sarà la prossima settimana?tra_una_settimana = oggi + timedelta(days=7)print(tra_una_settimana)
# Che giorno era 30 giorni fa?trenta_giorni_fa = oggi - timedelta(days=30)print(trenta_giorni_fa)
# Quanti giorni sono passati dal tuo compleanno?nato = date(2008, 3, 25)differenza = date.today() - nato # Sottrai due date → ottieni un timedeltaprint(f"Giorni vissuti: {differenza.days}")Confrontare date
Sezione intitolata “Confrontare date”Le date si confrontano come i numeri, usando <, > e ==:
from datetime import date
d1 = date(2024, 1, 1)d2 = date(2024, 12, 31)
print(d1 < d2) # True ← d1 viene prima di d2print(d1 == d2) # False ← sono date diverse
if date.today() > d1: print("Siamo dopo il 1 gennaio 2024")