Python Datetime: lavorare con date e ore

Scopri come gestire date, orari, fusi orari e calcoli in Python. Padroneggia la formattazione, l'analisi e l'aritmetica utilizzando datetime e timedelta.

Prova nell'editor

Panoramica

La gestione di date e orari è una sfida nota nello sviluppo di software, a causa degli anni bisestili, delle regolazioni dell'ora legale e dei diversi formati di fuso orario. Python risolve queste sfide con il suo modulo `datetime` integrato. Questo modulo fornisce un robusto insieme di classi di oggetti, come `date`, `time`, `datetime` e `timezone`, che rappresentano e manipolano i dati temporali in modo pulito, rendendo semplici i calcoli delle date.

Una delle attività più comuni è la conversione delle date in stringhe (formattazione) e delle stringhe in date (analisi). Python utilizza due metodi principali per questo: `.strftime()` (formato stringa ora) converte un oggetto datetime in una stringa leggibile utilizzando codici di formattazione (come `%Y` per anno, `%m` per mese e `%d` per giorno). Al contrario, `datetime.strptime()` (string parse time) analizza un input di stringa grezza in un oggetto datetime basato su un modello di formato corrispondente, che è vitale quando si leggono log o input API.

Anche l'esecuzione dei calcoli relativi alle date è completamente supportata utilizzando l'oggetto `timedelta`. Un "timedelta" rappresenta una durata di tempo (ad esempio, 7 giorni, 4 ore). Puoi aggiungere o sottrarre un "timedelta" da un "datetime" per calcolare date passate o future (ad esempio per determinare una data di scadenza). Quando si lavora con più fusi orari, l'utilizzo di oggetti che riconoscono il fuso orario (come "zoneinfo" o "timezone.utc") è fondamentale per garantire che i confronti delle date rimangano accurati tra le diverse posizioni dei server.

Codice e output di esecuzione

Analisi di stringhe in oggetti datetime e calcolo delle scadenze future utilizzando timedelta.

datetime_demo.py
Prova nell'editor
from datetime import datetime, timedelta

# Define a specific fixed base date and time (for deterministic runs)
base_date = datetime(2026, 5, 25, 23, 45, 50)
print(f"Base Date/Time: {base_date}")

# Format datetime as string
formatted = base_date.strftime("%Y-%m-%d %H:%M:%S")
print(f"Formatted String: {formatted}")

# Parse string to datetime
date_str = "2026-12-25"
parsed_date = datetime.strptime(date_str, "%Y-%m-%d")
print(f"Parsed Date: {parsed_date}")

# Date arithmetic with timedelta
ten_days_later = base_date + timedelta(days=10)
print(f"Date 10 days later: {ten_days_later.strftime('%Y-%m-%d')}")
Uscita terminale
Base Date/Time: 2026-05-25 23:45:50
Formatted String: 2026-05-25 23:45:50
Parsed Date: 2026-12-25 00:00:00
Date 10 days later: 2026-06-04

Implementazione passo dopo passo

  • Calcolo della scadenza della prova e delle date di fatturazione
  • Analisi delle stringhe di timestamp all'interno dei log di accesso al server
  • Pianificazione di processi cron automatizzati o report ricorrenti

Domande frequenti

Cos'è un oggetto datetime ingenuo e consapevole?

Un oggetto datetime ingenuo non contiene informazioni sul fuso orario, mentre un oggetto datetime consapevole include gli offset del fuso orario, rendendolo sicuro per i calcoli dell'ora internazionale.

Come faccio a calcolare la differenza tra due date?

La sottrazione di un oggetto datetime da un altro restituisce un oggetto timedelta che rappresenta la durata esatta tra di loro.

Argomenti correlati

Risorse Python consigliate

Espandi le tue conoscenze con tutorial interattivi, foglietti illustrativi e confronti di codici correlati.