Come gestire date e orari in Python con datetime

La gestione di date e orari è un'attività comune nella programmazione e Python fornisce un modulo integrato chiamato datetime per lavorare con date e orari. Questo modulo fornisce classi per manipolare date, orari e intervalli di tempo, rendendo più semplice eseguire calcoli aritmetici sulle date, formattare le date e gestire i fusi orari. In questo articolo, esploreremo come utilizzare il modulo datetime per gestire efficacemente date e orari in Python.

Introduzione a datetime

Il modulo datetime fornisce diverse classi, come datetime.date, datetime.time, datetime.datetime, datetime.timedelta e datetime.tzinfo. Queste classi ci consentono di lavorare con date, orari e intervalli di tempo.

Per iniziare a utilizzare il modulo datetime, è necessario importarlo:

import datetime

Lavorare con le date

Puoi creare un oggetto data usando la classe date. Richiede tre parametri: anno, mese e giorno.

from datetime import date

# Create a date object
my_date = date(2023, 9, 4)
print(my_date)  # Output: 2023-09-04

È anche possibile accedere ai singoli componenti della data, come anno, mese e giorno:

print(my_date.year)   # Output: 2023
print(my_date.month)  # Output: 9
print(my_date.day)    # Output: 4

Lavorare con i tempi

La classe time consente di creare un oggetto time. Richiede ore, minuti, secondi e microsecondi (facoltativo).

from datetime import time

# Create a time object
my_time = time(14, 30, 45)
print(my_time)  # Output: 14:30:45

Similmente alle date, è possibile accedere ai singoli componenti dell'oggetto tempo:

print(my_time.hour)   # Output: 14
print(my_time.minute) # Output: 30
print(my_time.second) # Output: 45

Combinazione di data e ora con datetime

La classe datetime combina sia la data che l'ora in un singolo oggetto. Puoi creare un oggetto datetime passando anno, mese, giorno, ora, minuto, secondo e microsecondo (facoltativo).

from datetime import datetime

# Create a datetime object
my_datetime = datetime(2023, 9, 4, 14, 30, 45)
print(my_datetime)  # Output: 2023-09-04 14:30:45

È possibile accedere sia ai componenti data che ora di un oggetto datetime:

print(my_datetime.date())  # Output: 2023-09-04
print(my_datetime.time())  # Output: 14:30:45

Ottenere la data e l'ora correnti

Il modulo datetime fornisce metodi convenienti per ottenere la data, l'ora corrente o entrambe:

# Current date
today = date.today()
print(today)  # Output: (current date)

# Current date and time
now = datetime.now()
print(now)  # Output: (current date and time)

Aritmetica delle date con timedelta

La classe timedelta rappresenta una durata, che è la differenza tra due date o orari. Consente di eseguire calcoli aritmetici sulle date, come l'aggiunta o la sottrazione di giorni da una data.

from datetime import timedelta

# Create a timedelta object
delta = timedelta(days=7)

# Add 7 days to the current date
future_date = today + delta
print(future_date)

Puoi anche calcolare la differenza tra due date:

# Calculate the difference between two dates
date1 = date(2023, 9, 4)
date2 = date(2023, 9, 11)
difference = date2 - date1
print(difference.days)  # Output: 7

Formattazione di date e orari

Il metodo strftime() consente di formattare una data o un'ora in una stringa. Questo metodo accetta un codice di formattazione per specificare il formato desiderato:

# Format a date object
formatted_date = today.strftime('%B %d, %Y')
print(formatted_date)  # Output: September 04, 2023

I codici di formato comuni includono:

  • %Y - Anno (ad esempio, 2023)
  • %m - Mese come numero decimale con zeri aggiunti (ad esempio, 09)
  • %d - Giorno del mese come numero decimale con zeri aggiunti (ad esempio, 04)
  • %H - Ora (orologio a 24 ore) come numero decimale con zeri aggiunti (ad esempio, 14)
  • %M - Minuto come numero decimale con zeri aggiunti (ad esempio, 30)
  • %S - Secondo come numero decimale con zeri (ad esempio, 45)

Analisi delle date dalle stringhe

Il metodo strptime() consente di convertire una stringa in un oggetto datetime, dato il formato della stringa data:

# Parse a date from a string
date_str = '2023-09-04'
parsed_date = datetime.strptime(date_str, '%Y-%m-%d')
print(parsed_date)

Lavorare con i fusi orari

Il modulo datetime supporta oggetti datetime che riconoscono il fuso orario utilizzando la libreria pytz. Per lavorare con i fusi orari, devi installare pytz:

pip install pytz

Quindi, puoi assegnare un fuso orario a un oggetto datetime:

from datetime import datetime
import pytz

# Set timezone to UTC
utc_zone = pytz.utc
now_utc = datetime.now(utc_zone)
print(now_utc)

Conclusione

Il modulo datetime in Python fornisce potenti strumenti per gestire date e orari, tra cui la creazione, la formattazione, l'analisi e l'esecuzione di calcoli aritmetici con oggetti data e ora. Che tu debba manipolare date, lavorare con fusi orari o formattare date e orari per la visualizzazione, il modulo datetime ti copre.