Python - Date e Ora

Ciao a tutti, futuri maghi Python! Oggi intraprenderemo un avventuroso viaggio attraverso il regno delle date e degli orari in Python. Come vostra insegnante di computer amichevole, sono entusiasta di guidarvi in questa avventura. Allora, afferrate le vostre bacchette virtuali (tastiere) e immergiamoci!

Python - Date & Time

Cos'è un Intervallo di Tick?

Prima di iniziare a giocare con date e orari, diamo un'occhiata a un concetto fondamentale: gli intervalli di tick. Nel mondo dei computer, il tempo viene spesso misurato in tick. Ma cosa sono esattamente i tick?

Un tick è come il battito del cuore del vostro computer. È l'unità di tempo più piccola che il clock del vostro computer può misurare. In Python, misuriamo i tick come il numero di secondi trascorsi depuis le 00:00:00 UTC del 1 gennaio 1970. Questo punto nel tempo viene spesso chiamato "epoch".

Vediamo come ottenere il valore del tick corrente:

import time

ticks = time.time()
print("Valore del tick corrente:", ticks)

Se eseguite questo codice, vedrete un grande numero stampato. Questo è il numero di secondi che sono trascorsi dall'epoch. Molto cool, vero?

Cos'è TimeTuple?

Ora, parliamo di TimeTuple. Non è un nuovo passo di danza (anche se sembra sia!), ma piuttosto un modo che Python ha per rappresentare l'ora.

Un TimeTuple è una tupla che contiene 9 elementi che rappresentano diversi aspetti del tempo:

Indice Attributo Valori
0 Anno (ad esempio, 2023)
1 Mese 1-12
2 Giorno 1-31
3 Ora 0-23
4 Minuto 0-59
5 Secondo 0-61 (60 e 61 per i secondi intercalari)
6 Giorno della settimana 0-6 (0 è lunedì)
7 Giorno dell'anno 1-366
8 DST -1, 0, 1 (flag per l'ora legale)

Non preoccupatevi se questo sembra troppo complicato. Utilizzeremo questi elementi durante la nostra lezione, e in breve tempo vi familiarizzerete con essi!

Ottenere l'Ora Corrente

Cominciamo con qualcosa di semplice: ottenere l'ora corrente. Python rende questo incredibilmente facile con il modulo time:

import time

current_time = time.localtime()
print("Ora corrente:", current_time)

Quando eseguite questo, vedrete una TimeTuple stampata. Ogni numero corrisponde a un elemento nella tabella che abbiamo appena visto. Ad esempio, se vedete time.struct_time(tm_year=2023, tm_mon=6, tm_mday=15, tm_hour=14, tm_min=30, tm_sec=0, tm_wday=3, tm_yday=166, tm_isdst=0), significa che è il 15 giugno 2023, alle 14:30.

Ottenere l'Ora Formattata

Mentre i TimeTuple sono utili per i computer, non sono molto facili da leggere per gli esseri umani. Formattiamo il nostro tempo in un modo più leggibile:

import time

formatted_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
print("Ora formattata:", formatted_time)

Questo stampa qualcosa come "2023-06-15 14:30:00". Molto meglio, vero? I %Y, %m, %d, ecc., sono codici di formattazione che dicono a Python come ordinare gli elementi del tempo. È come dare a Python un template per come volete che il vostro tempo sia visualizzato.

Ottenere il Calendario per un Mese

Ora, passiamo a un altro livello e stampiamo un intero calendario per un mese. Utilizzeremo il modulo calendar per questo:

import calendar

year = 2023
month = 6

print(calendar.month(year, month))

Questo stampa un calendario ben formattato per giugno 2023. È come avere un mini calendario da tavolo proprio nel vostro programma Python!

Il Modulo time

Abbiamo già utilizzato il modulo time un po', ma esploriamolo ulteriormente. Questo modulo fornisce varie funzioni relative al tempo. Ecco alcune utili:

import time

print("Tempo corrente in secondi dall'epoch:", time.time())
print("Ora locale corrente:", time.ctime())
print("Attendo per 2 secondi...")
time.sleep(2)
print("Svegliato!")

La funzione sleep() è particolarmente utile quando volete che il vostro programma si ferma per un po'. È come dire al vostro codice di fare una piccola pausa!

Il Modulo calendar

Abbiamo visto come stampare un mese, ma il modulo calendar può fare molto di più:

import calendar

print("Il 2023 è un anno bisestile?", calendar.isleap(2023))
print("Quanti anni bisestili tra il 2000 e il 2050?", calendar.leapdays(2000, 2050))
print("Quale giorno della settimana è il 2023-06-15?", calendar.weekday(2023, 6, 15))

Queste funzioni vi aiutano a lavorare con calendari e date facilmente. Non dovete più contare sui vostri fingers per capire gli anni bisestili!

Modulo Python datetime

Il modulo datetime è come il coltellino svizzero della manipolazione del tempo in Python. Combina la funzionalità sia del modulo time che del modulo calendar e aggiunge anche altre funzionalità.

from datetime import datetime, date, time

# Data e ora corrente
now = datetime.now()
print("Data e ora corrente:", now)

# Creare una data specifica
my_birthday = date(1990, 5, 15)
print("Il mio compleanno:", my_birthday)

# Creare un'ora specifica
alarm = time(7, 30, 0)
print("Sveglia impostata per:", alarm)

Con datetime, potete creare, manipolare e formattare date e orari con facilità.

Oggetto Python date

L'oggetto date dal modulo datetime vi permette di lavorare con date (anno, mese e giorno):

from datetime import date

today = date.today()
print("Data odierna:", today)
print("Anno:", today.year)
print("Mese:", today.month)
print("Giorno:", today.day)

È come avere un calendario intelligente che sa quale giorno è e può raccontarvi tutto al riguardo!

Oggetto Python time

Allo stesso modo, l'oggetto time vi permette di lavorare con gli orari (ora, minuto, secondo, microsecondo):

from datetime import time

lunch_time = time(12, 30, 0)
print("Ora di pranzo:", lunch_time)
print("Ora:", lunch_time.hour)
print("Minuto:", lunch_time.minute)
print("Secondo:", lunch_time.second)

Ora potete programmare con precisione le vostre pause di programmazione!

Oggetto Python datetime

L'oggetto datetime combina date e time, dandovi il pieno controllo su entrambi:

from datetime import datetime

now = datetime.now()
print("Data e ora corrente:", now)
print("Anno corrente:", now.year)
print("Mese corrente:", now.month)
print("Giorno corrente:", now.day)
print("Ora corrente:", now.hour)
print("Minuto corrente:", now.minute)
print("Secondo corrente:", now.second)

È come avere un orologio superpotente che sa tutto sul momento corrente!

Oggetto Python timedelta

Non ultimo, parliamo di timedelta. Questo oggetto rappresenta una durata di tempo ed è incredibilmente utile per l'aritmetica delle date:

from datetime import datetime, timedelta

now = datetime.now()
print("Data e ora corrente:", now)

# Aggiungi 1 giorno
tomorrow = now + timedelta(days=1)
print("Questa volta domani:", tomorrow)

# Sottrai 1 settimana
last_week = now - timedelta(weeks=1)
print("Questa volta la scorsa settimana:", last_week)

Con timedelta, potete viaggiare nel tempo nel vostro codice! Beh, tipo. Potete facilmente calcolare future e date passate, il che è molto utile per molte applicazioni.

E qui avete tutto, miei giovani Pythonisti! Abbiamo attraversato il fascinante mondo delle date e degli orari in Python. Ricordate, la pratica fa il maestro, quindi non esitate a sperimentare con questi concetti. Prima che vi accorgete, sarete in grado di manipolare il tempo come un vero signore del tempo codificato!

Credits: Image by storyset