# Python datetime: cómo trabajar con fecha y hora en Python

El **módulo datetime de Python** facilita el trabajo con fechas y horas. Puedes mostrar fechas en distintos formatos y crear objetos de fecha con solo unas líneas de código.

## El módulo datetime de un vistazo

Python datetime es un módulo de Python que deberías conocer, tanto si acabas de leer tu primer [tutorial de Python](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/tutorial-de-python/ "Tutorial de Python") como si llevas mucho tiempo trabajando con el [lenguaje de programación de Internet](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/lenguajes-de-programacion-web/ "Lenguajes de programación web"). Puedes pensar que los módulos son similares a una biblioteca de código en otros lenguajes de programación. Al importar el módulo datetime, amplías Python con **funciones para el tratamiento de la fecha y la hora**. Para ello, se utilizan objetos de fecha específicos dentro del módulo, que puedes crear fácilmente en tu código.

Consejo ¿Utilizas Python en tu proyecto web? Con [Deploy Now](https://www.ionos.mx/alojamiento/deploy-now "Deploy Now de IONOS") puedes desplegar fácilmente los cambios de código en cualquier momento a través de [GitHub](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/github/ "GitHub") y seguir en directo el estado actual de tu proyecto.

## Python datetime: fecha y hora

Puedes utilizar Python datetime, por ejemplo, para almacenar una fecha y una hora en un objeto distinto. Para ello, necesitas el **constructor datetime de Python**, cuya sintaxis es la siguiente:

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

Los parámetros que toma la función representan la fecha y la hora actuales. Los parámetros que especifican el tiempo son opcionales. En ellos, el valor por defecto es siempre 0 (lo mismo ocurre con el parámetro que especifica la zona horaria, que también se establece en 0 por defecto). La función datetime devuelve un objeto de fecha y hora.

## Python date: fecha

De forma análoga al constructor datetime, también existe el **constructor Python date** con el que se puede crear un objeto fecha; sin embargo, no muestra la hora. Sintácticamente, el constructor date es similar a su homólogo datetime:

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

Los parámetros que toma el constructor de fecha de Python son el año, el mes y el día. El resultado de la llamada a la función es un objeto fecha.

## Recuperar la fecha actual: cómo se hace

Si no quieres guardar ningún dato concreto, sino la fecha y hora actuales, tienes a tu disposición las **funciones predefinidas**. Dependiendo de si solo te interesa la fecha actual o la fecha y hora actuales, deberás utilizar una función diferente.

### Cómo usar la fecha actual

Si solo te interesa la fecha compuesta por año, mes y día, puedes utilizar una función de la clase Python date llamada “**today**”. La llamada a la función es sencilla:

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

Para llamar a la función today, primero tienes que especificar el módulo datetime, que se proporciona con el **alias dt** en el ejemplo anterior. A continuación, utiliza la notación punto para acceder a la fecha de clase, que a su vez especifica la función today. Después de ejecutar el código anterior, hay un objeto fecha con la fecha actual en **la variable llamada date.today**.

### Procedimiento para la fecha y hora actuales

Si además necesitas la hora actual, te ayudará una función de la clase datetime: **now**. Con una llamada a now, obtienes un objeto Python datetime que contiene la fecha y la hora actuales, con una precisión de milisegundos.

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

La llamada es **similar a la llamada de la función today**, pero dentro de la clase datetime. Tras la llamada a la función, se almacena un objeto datetime en la variable “current\_date\_and\_time”, que contiene la fecha y hora actuales.

Consejo Si solo te interesan valores individuales de un objeto, como el día, puedes utilizar la **notación punto** para acceder exactamente a ese valor. Con “current\_date.day”, por ejemplo, accederás al día actual.

## Formatear datos en Python

Para las aplicaciones en las que quieras dar salida a la fecha, necesitas formatear las fechas u objetos de fecha de forma que cumplan el propósito de tu aplicación. El módulo datetime de Python también proporciona una función adecuada para este fin llamada **strftime**.

La sintaxis de la función es la siguiente:

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

La función se **invoca directamente sobre un objeto fecha o fecha-hora** y toma un formato específico como parámetro. Debes especificar este formato como un [string de Python](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/python-string/ "Python string"), es decir, entre comillas. Python admite varios formatos diferentes, cuyas abreviaturas se indican en la tabla siguiente:

<table>
  <thead>
    <tr>
      <th><strong>Abreviatura</strong></th>
      <th><strong>Descripción</strong></th>
      <th><strong>Ejemplo</strong></th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>%a</td>
      <td>Día de la semana, abreviado</td>
      <td>Sat</td>
    </tr>
    <tr>
      <td>%A</td>
      <td>Día de la semana, completo</td>
      <td>Saturday</td>
    </tr>
    <tr>
      <td>%w</td>
      <td>Día de la semana como número</td>
      <td>6</td>
    </tr>
    <tr>
      <td>%u</td>
      <td>ISO 8601 Día laborable</td>
      <td>6</td>
    </tr>
    <tr>
      <td>%j</td>
      <td>Número del día actual (en relación a todo el año)</td>
      <td>365</td>
    </tr>
    <tr>
      <td>%b</td>
      <td>Nombre del mes, abreviado</td>
      <td>Dec</td>
    </tr>
    <tr>
      <td>%B</td>
      <td>Nombre del mes, completo</td>
      <td>December</td>
    </tr>
    <tr>
      <td>%m</td>
      <td>Mes como número</td>
      <td>12</td>
    </tr>
    <tr>
      <td>%U</td>
      <td>Número de la semana, empezando por el domingo como primer día de la semana</td>
      <td>50</td>
    </tr>
    <tr>
      <td>%W</td>
      <td>Número de la semana, empezando por el lunes como primer día de la semana</td>
      <td>50</td>
    </tr>
    <tr>
      <td>%y</td>
      <td>Año, abreviado</td>
      <td>22</td>
    </tr>
    <tr>
      <td>%Y</td>
      <td>Año, completo</td>
      <td>2022</td>
    </tr>
    <tr>
      <td>%H</td>
      <td>Hora (0-23)</td>
      <td>22</td>
    </tr>
    <tr>
      <td>%I</td>
      <td>Hora (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>Segundo</td>
      <td>37</td>
    </tr>
    <tr>
      <td>%f</td>
      <td>Microsegundo</td>
      <td>567213</td>
    </tr>
    <tr>
      <td>%z</td>
      <td>Desplazamiento UTC</td>
      <td>+0100</td>
    </tr>
    <tr>
      <td>%Z</td>
      <td>Huso horario</td>
      <td>CST</td>
    </tr>
  </tbody>
</table>


This is a markdown version of: [https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/python-datetime/](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/python-datetime/) for AI/LLM consumption.