# Python String to DateTime: conversão e utilização

Os objetos DateTime servem para realizar facilmente cálculos de tempo, como somar ou subtrair intervalos de tempo. A **conversão de cadeias em objetos DateTime** é fundamental para estruturar, analisar e representar com precisão informações de tempo ao programar em Python.

## Como funciona a conversão de uma string Python para DateTime

Converter uma string Python para DateTime é um processo no qual cadeias de texto que contêm uma data ou hora são convertidas num objeto DateTime, ou seja, uma estrutura de dados para **representar e manipular informações de data e hora**. A conversão de uma string para DateTime pode ser necessária se você trabalha em Python com dados de data e hora que aparecem como cadeias de caracteres.

Assim, as informações são convertidas para um **formato utilizável** para realizar cálculos, comparações de datas ou formatar informações de horas, por exemplo. Os métodos do formato de string do Python para concatenar expressões também podem ser úteis ao trabalhar com objetos DateTime.

## Converter cadeias em objetos DateTime

A conversão de strings em objetos DateTime abrange diferentes funções e módulos, como a biblioteca `datetime` e o método `strptime()`.

### Utilização de `strptime()`

O método `strptime()` da biblioteca `datetime` é utilizado para converter uma cadeia de caracteres num objeto Python DateTime. Necessita **de dois argumentos**: a cadeia de caracteres a ser analisada e o formato de data ou hora da cadeia.

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

### `datetime.datetime()`

Com o método `strptime()`, é possível converter uma cadeia de texto num objeto `datetime.datetime`, tendo em conta um formato específico de data e hora.

```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
```

Neste exemplo, a cadeia `date_string` é especificada como `'2023-10-30 12:00:00'` e o formato `'%Y-%m-%d %H:%M:%S'` define a ordem e a aparência da data e da hora na cadeia. O método `strptime()` analisa a cadeia de acordo com este formato e cria a partir dela um objeto `datetime.datetime`, que é depois guardado na variável `date_object`.

A seguir, explicamos o que significa o formato `'%Y-%m-%d %H:%M:%S'`:

- **`%Y`**: quatro dígitos do ano;
- **`%m`**: dois dígitos do mês;
- **`%d`**: dois dígitos do dia;
- **`%H`**: hora (formato de 24 horas);
- **`%M`**: minuto;
- **`%S`**: segundos.

### `datetime.time()`

Ao converter cadeias num objeto `datetime.time`, é possível representar **horas sem data**. Isto pode ser feito através do método `strptime()` da classe `datetime` ou dividindo uma cadeia de tempo em horas, minutos e segundos.

```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'` refere-se ao formato de horas, minutos e segundos. O método `strptime()` interpreta a cadeia de horas de acordo com este formato e cria um objeto `datetime.time`.

### `datetime.date()`

Você também pode converter uma string em um objeto `datetime.date` usando o método `strptime()` da classe `datetime` ou dividindo manualmente a string da data em ano, mês e dia.

```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
```

No exemplo anterior, `'%Y-%m-%d'` refere-se ao formato de ano, mês e dia. O método `strptime()` analisa a cadeia de data e cria um objeto `datetime.date`.

## Resolução de erros relacionados com `strptime()`

Ao utilizar o método `strptime()` para converter uma string Python em DateTime, podem ocorrer erros, especialmente se o formato especificado não corresponder ao formato da string de entrada. Veja alguns dos erros mais comuns e descubra como resolvê-los:

- **`ValueError: time data '...' does not match format '...'`**. Este erro aparece quando a cadeia de entrada não coincide com o formato especificado. Neste caso, deve certificar-se de que está a utilizar o padrão de formato correto em `strptime()`.
- **`ValueError: unconverted data remains`**. Este erro aparece quando há dados não representados após tentar converter a cadeia. Verifique o padrão de formato para garantir que corresponde exatamente à estrutura da cadeia de entrada.
- **`TypeError: strptime() argument 1 must be str, not ...`**. Este erro ocorre quando o parâmetro passado para `strptime()` não é uma cadeia. Verifique se o argumento que está a passar é uma cadeia que contém o formato de data ou hora.

Deve certificar-se de que o padrão de formato interpreta corretamente todas as partes da cadeia de entrada (ano, mês, dia, hora, etc.). Pode haver diferenças nos separadores, no uso de maiúsculas ou minúsculas e outros detalhes entre o padrão de formato e a cadeia de entrada.


This is a markdown version of: [https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/python-string-to-datetime-chaves-da-conversao/](https://www.ionos.com/pt-pt/digitalguide/paginas-web/desenvolvimento-web/python-string-to-datetime-chaves-da-conversao/) for AI/LLM consumption.