# Python String to DateTime: conversión y uso

Los objetos DateTime te sirven para realizar fácilmente cálculos de tiempo como sumar o restar intervalos de tiempo. La **conversión de cadenas en objetos DateTime** resulta fundamental para estructurar, analizar y representar de forma precisa información de tiempo al programar en Python.

## Así funciona la conversión de un Python string a DateTime

Convertir un string de Python a DateTime es un proceso en el que cadenas de texto que contienen una fecha u hora se convierten en un objeto DateTime, esto es, una estructura de datos para **representar y manipular información de fecha y hora**. La conversión de una cadena en DateTime puede ser necesaria si trabajas en Python con datos de fecha y hora que figuran como cadena de caracteres.

Así, la información se convierte a un **formato utilizable** para realizar cálculos, comparaciones de fechas o formatear información de horas, por ejemplo. Los métodos de [Python string format](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/python-string-format/) para concatenar expresiones también pueden serte útiles al trabajar con objetos DateTime.

## Convertir cadenas en objetos DateTime

La conversión de strings en objetos DateTime abarca distintas funciones y módulos, como la librería `datetime` y el método `strptime()`.

### Uso de `strptime()`

El método `strptime()` de la librería `datetime` se utiliza para convertir una cadena en un objeto de [Python DateTime](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/python-datetime/). Necesita **dos argumentos**: la cadena que se va a analizar y el formato de fecha u hora del string.

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

### `datetime.datetime()`

Con el método `strptime()` se puede convertir una cadena de texto en un objeto `datetime.datetime` teniendo en cuenta un formato específico de fecha y 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
```

En este ejemplo, la cadena `date_string` se especifica como `'2023-10-30 12:00:00'` y el formato `'%Y-%m-%d %H:%M:%S'` define el orden y la apariencia de la fecha y la hora en la cadena. El método `strptime()` analiza la cadena según este formato y crea a partir de ella un objeto `datetime.datetime`, que se guarda después en la variable `date_object`.

A continuación, se explica lo que significa el formato `'%Y-%m-%d %H:%M:%S'`:

- **`%Y`**: cuatro dígitos del año;
- **`%m`**: dos dígitos del mes;
- **`%d`**: dos dígitos del día;
- **`%H`**: hora (formato de 24 horas);
- **`%M`**: minuto;
- **`%S`**: segundo.

### `datetime.time()`

Al convertir cadenas en un objeto `datetime.time`, se pueden representar **horas sin fecha**. Esto se puede realizar mediante el método `strptime()` de la clase `datetime` o dividiendo una cadena de tiempo en horas, minutos y 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
```

Con `'%H:%M:%S'` se hace referencia al formato de horas, minutos y segundos. El método `strptime()` interpreta la cadena de hora según este formato y crea un objeto `datetime.time`.

### `datetime.date()`

También puedes convertir un string en un objeto `datetime.date` utilizando el método `strptime()` de la clase `datetime` o dividiendo de forma manual de la cadena de fecha en año, mes y día.

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

En el anterior ejemplo, `'%Y-%m-%d'` se refiere al formato de año, mes y día. El método `strptime()` analiza la cadena de fecha y crea un objeto `datetime.date`.

## Resolución de errores relacionados con `strptime()`

Al utilizar el método `strptime()` para convertir un string de Python en DateTime, pueden surgir errores, especialmente si el formato especificado no coincide con el formato de la cadena de entrada. Echa un vistazo a algunos de los errores más comunes y averigua cómo solucionarlos:

- **`ValueError: time data '...' does not match format '...'`**. Este error aparece cuando la cadena de entrada no coincide con el formato especificado. En este caso, debes asegurarte de que se está utilizando el patrón de formato correcto en `strptime()`.
- **`ValueError: unconverted data remains`**. Este error aparece cuando quedan datos sin representar después de intentar convertir la cadena. Revisa el patrón de formato para asegurarte de que coincide exactamente con la estructura de la cadena de entrada.
- **`TypeError: strptime() argument 1 must be str, not ...`**. Este error ocurre cuando el parámetro que se pasa a `strptime()` no es una cadena. Comprueba que el argumento que estás pasando sea un string que contenga el formato de fecha u hora.

Debes asegurarte de que el patrón de formato interprete correctamente todas las partes de la cadena de entrada (año, mes, día, hora, etc.). Podría haber diferencias en los separadores, el uso de mayúsculas o minúsculas y otros detalles entre el patrón de formato y la cadena de entrada.


This is a markdown version of: [https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/python-string-to-datetime-claves-de-la-conversion/](https://www.ionos.com/es-us/digitalguide/paginas-web/desarrollo-web/python-string-to-datetime-claves-de-la-conversion/) for AI/LLM consumption.