# Python: conversione da stringa a datetime e il suo utilizzo

Con gli oggetti datetime è possibile eseguire calcoli con i dati relativi a informazioni temporali come l’aggiunta o la sottrazione di intervalli di tempo. La **conversione da stringhe a oggetti datetime** ha un ruolo centrale nella strutturazione, nell’analisi e nella rappresentazione di dati temporali nella programmazione in Python.

## Come funziona la conversione da stringa a datetime in Python

La conversione da stringa a datetime in Python è un processo di trasformazione di una stringa di testo, contenente una rappresentazione di data e/o ora, in un oggetto datetime. Datetime è una struttura di dati in Python che permette di **rappresentare e manipolare informazioni su data e ora**. La conversione da stringa a datetime può essere necessaria quando stai lavorando in Python con informazioni su data e ora sotto forma di sequenze di caratteri.

Le informazioni vengono quindi convertite in un **formato utilizzabile**, ad esempio per eseguire calcoli, confrontare le date o formattare i dati temporali. Anche i metodi di [formattazione delle stringhe](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/formattazione-delle-stringhe-in-python/) per la concatenazione di espressioni possono esserti utili per lavorare con gli oggetti datetime.

## Conversione da stringhe a oggetti datetime

La conversione da stringhe a datetime in Python comprende diverse funzioni e moduli, ad esempio la libreria `datetime` e il metodo `strptime()`, con cui trasformare le stringhe in oggetti datetime e viceversa.

### Utilizzo di `strptime()`

Il metodo `strptime()` (String Parse Time) della libreria `datetime` serve a convertire una stringa in un oggetto [datetime di Python](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/python-datetime/). Sono necessari **due argomenti**: la stringa da analizzare e il formato data/ora della stringa.

```python
datetime.strptime(date_string, format)
```

### `datetime.datetime()`

Il metodo `strptime()` permette di convertire una stringa in un oggetto `datetime.datetime` tenendo conto di un determinato formato di data/ora.

```python
from datetime import datetime
date_string = '2023-10-30 12:00:00'
date_object = datetime.strptime(date_string, '%Y-%m-%d %H:%M:%S')
print(date_object) # Output: 2023-10-30 12:00:00
```

In questo esempio, `date_string` è indicata come `'2023-10-30 12:00:00'`, mentre il formato `'%Y-%m-%d %H:%M:%S'` definisce l’ordine e l’aspetto della data e dell’ora nella stringa. Il metodo `strptime()` analizza la stringa in base a questo formato e ne genera un oggetto `datetime.datetime`, che viene quindi memorizzato nella variabile `date_object`.

Il significato degli elementi nel formato `'%Y-%m-%d %H:%M:%S'` è il seguente:

- **`%Y`**: numero dell’anno a quattro cifre
- **`%m`**: numero del mese a due cifre
- **`%d`**: numero del giorno a due cifre
- **`%H`**: ora (formato a 24 ore)
- **`%M`**: minuto
- **`%S`**: secondo

### `datetime.time()`

La conversione di stringhe in un oggetto `datetime.time` ti permette di **visualizzare gli orari senza data**. A tal fine puoi utilizzare il metodo `strptime()` della classe `datetime` oppure suddividere la stringa di un orario in ore, minuti e secondi.

```python
from datetime import datetime
time_string = '14::30::00'
time_object = datetime.strptime(time_string, '%H::%M::%S').time()
print(time_object) # Output: 14:30:00
```

`'%H:%M:%S'` sta per il formato ore:minuti:secondi. Il metodo `strptime()` interpreta la stringa temporale in base a questo formato e ne genera un oggetto `datetime.time`.

### `datetime.date()`

È anche possibile convertire una stringa in un oggetto `datetime.date` per mezzo del metodo `strptime()` della classe `datetime` oppure suddividendo manualmente la stringa della data in anno, mese e giorno.

```python
from datetime import datetime
date_string = '2023-11-30'
date_object = datetime.strptime(date_string, '%Y-%m-%d').date()
print(date_object) # Output: 2023-11-30
```

`'%Y-%m-%d'` è il formato anno-mese-giorno. Il metodo `strptime()` analizza la stringa della data e crea un oggetto `datetime.date`.

## Risoluzione degli errori di `strptime()`

Utilizzando il metodo `strptime()` per la conversione da stringa a datetime in Python potresti imbatterti in alcuni errori, in particolare se il formato indicato non corrisponde al formato della stringa immessa. Qui trovi alcuni degli errori più comuni e le possibili soluzioni:

- **`ValueError: time data '...' does not match format '...'`**: questo errore si presenta quando la stringa immessa non corrisponde al formato indicato. Assicurati di utilizzare il modello di formato corretto in `strptime()`.
- **`ValueError: unconverted data remains`**: questo errore compare quando rimangono dei dati non ancora interpretati dopo l’elaborazione della stringa. Verifica il modello del formato per assicurarti che tutte le parti della stringa immessa siano comprese nel formato.
- **`TypeError: strptime() argument 1 must be str, not ...`**: questo problema può verificarsi quando il parametro assegnato a `strptime()` non è una stringa. Controlla che il valore assegnato sia una stringa contenente il formato data/ora.

Inoltre devi controllare che il modello del formato interpreti correttamente tutte le parti della stringa immessa (anno, mese, giorno, ora, ecc.). Considera quindi le possibili differenze tra i caratteri separatori, l’uso di maiuscole e/o minuscole, e altri dettagli tra il modello del formato e la stringa immessa.


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