# Python datetime: come lavorare con data e ora in Python

Il **modulo Python datetime** semplifica il lavoro con informazioni su data e ora. In questo modo è possibile visualizzare le date e creare oggetti data utilizzando soltanto poche righe di codice.

## Il modulo datetime in breve

Python datetime è un modulo di Python che vale la pena conoscere, sia che abbiate appena letto il vostro primo [tutorial su Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/tutorial-python/ "Tutorial Python") sia che lavoriate già da tempo con questo [linguaggio di programmazione per il web](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/linguaggi-programmazione-web/ "Linguaggi programmazione web"). È possibile pensare ai moduli come a una libreria di codice in altri linguaggi di programmazione. L’importazione del modulo datetime permette di ampliare le funzionalità di Python con **funzioni per la gestione della data e dell’ora**. A tal fine, il modulo utilizza specifici oggetti data che potete creare facilmente nel vostro codice.

Consiglio Utilizzate Python per il vostro progetto web? [Deploy Now](https://www.ionos.it/hosting/deploy-now "Deploy Now » Progetta e sostituisci con GitHub") di IONOS vi permette di effettuare in qualsiasi momento il deployment delle modifiche al vostro codice tramite [GitHub](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/github/ "GitHub") e di seguire lo stato aggiornato del vostro progetto in tempo reale.

## Python datetime: data e ora

Un esempio di utilizzo di Python datetime è la memorizzazione di data e ora in un oggetto separato. Per farlo è necessario il **costruttore Python datetime**, la cui sintassi si presenta così:

```python
import datetime as dt
dt.datetime(year, month, day, hour, minute, second, microsecond, timezone)
```

I parametri accettati dalla funzione rappresentano la data e l’ora correnti. I parametri che specificano l’ora sono opzionali: il valore predefinito è sempre impostato su 0. Lo stesso vale per il parametro che indica il fuso orario e che è impostato su NULL per impostazione predefinita. La funzione datetime restituisce un oggetto datetime di Python.

## Il costruttore date in Python: la data

Analogamente al costruttore datetime, Python dispone anche del **costruttore date**, che permette di creare un oggetto date. Qui l’ora corrente non ha alcuna importanza. La sintassi del costruttore date è analoga a quella di datetime:

```python
import datetime as dt
dt.date(year, month, day)
```

I parametri di passaggio accettati dal costruttore date in Python sono l’anno, il mese e il giorno desiderati. Il risultato dell’esecuzione della funzione è un oggetto date.

## Come richiamare la data corrente

Alcune **funzioni predefinite** sono a vostra disposizione per memorizzare la data e l’ora correnti anziché date specifiche. Se invece vi interessa utilizzare la data corrente oppure la data e l’ora correnti insieme, dovete ricorrere a una funzione diversa.

### Procedura per la data corrente

Se vi interessa solo la data composta da anno, mese e giorno, potete utilizzare una funzione della classe date di Python di nome “**today**”. Eseguire la funzione è semplice:

```python
import datetime as dt
current_date = dt.date.today()
```

Per eseguire la funzione today è necessario indicare innanzitutto il modulo datetime, che nell’esempio precedente contiene l’**alias dt**. Successivamente, utilizzate la notazione con punto per accedere alla classe date, nella quale è specificata a sua volta la funzione today. Dopo aver eseguito il codice sopra indicato, **la variabile di nome current\_date** contiene un oggetto date di Python con la data corrente.

### Procedura per la data e l’ora correnti insieme

Se vi serve anche l’ora corrente, potete ricorrere a una funzione della classe datetime: **now**. Eseguendo la funzione now otterrete un oggetto datetime di Python che, oltre alla data corrente, contiene anche l’ora esatta, fino al singolo millisecondo.

```python
import datetime as dt
current_date_and_time = dt.datetime.now()
```

L’esecuzione è **analoga a quella della funzione today**, ma nell’ambito della classe datetime. Dopo l’esecuzione della funzione, la variabile “current\_date\_and\_time” contiene un oggetto datetime con la data e l’ora correnti.

Consiglio Se vi interessano singoli valori di un oggetto, ad esempio il giorno, è possibile utilizzare la **notazione con punto** per accedere esattamente a questo valore. Ad esempio, con “current\_date.day” potete accedere al giorno corrente.

## Formattazione di date in Python

La formattazione di oggetti datetime e date è particolarmente importante quando è necessario ottenere come risultato una data nel formato adatto allo scopo della vostra applicazione. Anche in questo caso il modulo Python datetime dispone di un’idonea funzione di nome **strftime**.

La sintassi della funzione si presenta così:

```python
import datetime as dt
current_date = dt.date.today()
current_date.strftime(format)
```

La funzione viene **eseguita direttamente su un oggetto date o datetime** e accetta un determinato formato come parametro di passaggio. Il formato va inserito sotto forma di [stringa di Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/stringhe-in-python/ "Stringhe in Python"), ossia tra virgolette. A tal fine Python supporta vari formati diversi; nella tabella seguente è riportato un riepilogo delle relative abbreviazioni:

<table>
  <thead>
    <tr>
      <th><strong>Abbreviazione</strong></th>
      <th><strong>Descrizione</strong></th>
      <th><strong>Esempio</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>%a</td>
      <td>Giorno della settimana, abbreviato</td>
      <td>Sat</td>
    </tr>
    <tr>
      <td>%A</td>
      <td>Giorno della settimana, per esteso</td>
      <td>Saturday</td>
    </tr>
    <tr>
      <td>%w</td>
      <td>Giorno della settimana come numero</td>
      <td>6</td>
    </tr>
    <tr>
      <td>%u</td>
      <td>Giorno della settimana secondo ISO 8601</td>
      <td>6</td>
    </tr>
    <tr>
      <td>%j</td>
      <td>Numero del giorno corrente (riferito all’intero anno)</td>
      <td>365</td>
    </tr>
    <tr>
      <td>%b</td>
      <td>Nome del mese, abbreviato</td>
      <td>Dec</td>
    </tr>
    <tr>
      <td>%B</td>
      <td>Nome del mese, per esteso</td>
      <td>December</td>
    </tr>
    <tr>
      <td>%m</td>
      <td>Mese come numero</td>
      <td>12</td>
    </tr>
    <tr>
      <td>%U</td>
      <td>Numero della settimana, contando la domenica come primo giorno della settimana</td>
      <td>50</td>
    </tr>
    <tr>
      <td>%W</td>
      <td>Numero della settimana, contando il lunedì come primo giorno della settimana</td>
      <td>50</td>
    </tr>
    <tr>
      <td>%y</td>
      <td>Anno, abbreviato</td>
      <td>22</td>
    </tr>
    <tr>
      <td>%Y</td>
      <td>Anno, per esteso</td>
      <td>2022</td>
    </tr>
    <tr>
      <td>%H</td>
      <td>Ora (0-23)</td>
      <td>22</td>
    </tr>
    <tr>
      <td>%I</td>
      <td>Ora (0-12)</td>
      <td>11</td>
    </tr>
    <tr>
      <td>%p</td>
      <td>AM o PM</td>
      <td>AM</td>
    </tr>
    <tr>
      <td>%M</td>
      <td>Minuto</td>
      <td>59</td>
    </tr>
    <tr>
      <td>%S</td>
      <td>Secondo</td>
      <td>37</td>
    </tr>
    <tr>
      <td>%f</td>
      <td>Microsecondo</td>
      <td>567213</td>
    </tr>
    <tr>
      <td>%z</td>
      <td>Offset UTC</td>
      <td>+0100</td>
    </tr>
    <tr>
      <td>%Z</td>
      <td>Fuso orario</td>
      <td>CST</td>
    </tr>
  </tbody>
</table>


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/python-datetime/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/python-datetime/) for AI/LLM consumption.