Manipulación de fechas en Python

Manipulación de fechas en Python

Este artículo explica la manipulación de fechas en Python.

YouTube Video

Manipulación de fechas en Python

La manipulación de fechas en Python utiliza principalmente el módulo datetime. Este módulo proporciona varias clases y funciones para manipular fechas y horas.

A continuación, se presentan algunos ejemplos de manipulación básica de fechas utilizando el módulo datetime.

Obteniendo la fecha y hora

Puede obtener la fecha y hora actual de la siguiente manera. datetime.now() y datetime.today() devuelven casi el mismo resultado, pero puede haber diferencias en cómo manejan las zonas horarias.

1from datetime import datetime
2
3# Get the current date and time
4now = datetime.now()
5print(f"Current date and time: {now}")
6
7# Get today's date only
8today = datetime.today()
9print(f"Today's date: {today.date()}")
  • Este código obtiene y muestra la fecha y hora actual, así como solo la fecha de hoy.

Creando fechas y horas específicas

Puede crear una fecha y hora específicas de la siguiente manera.

1from datetime import datetime
2
3# Create a specific date and time
4specific_date = datetime(2023, 11, 7, 10, 30, 45)
5print(f"Specified date and time: {specific_date}")
  • Este código crea y muestra la fecha y hora especificadas (7 de noviembre de 2023, 10:30:45).

Formateando fechas

El formateo de fechas se puede hacer de la siguiente manera.

1from datetime import datetime
2
3now = datetime.now()
4
5# Format the date
6formatted_date = now.strftime("%Y-%m-%d %H:%M:%S")
7print(f"Formatted date and time: {formatted_date}")
  • Este código obtiene la fecha y hora actual, la formatea al formato especificado usando strftime, y la muestra.

Cadenas de formato de fecha

  • %Y: Año (4 dígitos)
  • %m: Mes (01 a 12)
  • %d: Día (01 a 31)
  • %H: Hora (00 a 23)
  • %M: Minuto (00 a 59)
  • %S: Segundo (00 a 59)

Análisis de cadenas de fecha

Puede convertir una cadena que representa una fecha en un objeto datetime.

1from datetime import datetime
2
3date_string = "2023-11-07 10:30:45"
4parsed_date = datetime.strptime(date_string, "%Y-%m-%d %H:%M:%S")
5print(f"Parsed date and time: {parsed_date}")
  • Este código convierte una fecha representada como cadena en un objeto datetime usando strptime() y la muestra.

Aritmética de fechas

Las operaciones aritméticas con fechas pueden realizarse de la siguiente manera.

 1from datetime import datetime, timedelta
 2
 3now = datetime.now()
 4
 5# Date for one day later
 6tomorrow = now + timedelta(days=1)
 7print(f"Date for one day later: {tomorrow}")
 8
 9# Date for one week ago
10last_week = now - timedelta(weeks=1)
11print(f"Date for one week ago: {last_week}")
12
13# Time for two hours later
14in_two_hours = now + timedelta(hours=2)
15print(f"Time for two hours later: {in_two_hours}")
  • Este código utiliza timedelta para sumar o restar días y horas a la fecha y hora actual, calculando y mostrando la fecha y hora de mañana, de hace una semana y de dentro de dos horas.

Manejo de zonas horarias

También puede manejar zonas horarias con el módulo datetime.

 1from datetime import datetime, timezone, timedelta
 2
 3# Current UTC time
 4utc_now = datetime.now(timezone.utc)
 5print(f"Current UTC time: {utc_now}")
 6
 7# JST (UTC+9)
 8jst = timezone(timedelta(hours=9))
 9jst_now = datetime.now(jst)
10print(f"Current JST time: {jst_now}")
  • datetime devuelve un 'naive datetime' (sin información de zona horaria) por defecto. Puede manejar zonas horarias explícitamente usando la clase timezone o zoneinfo.

La clase date y la clase time

Con el módulo datetime, también puede manejar solo fechas o solo horas.

1from datetime import date, time
2
3d = date(2023, 11, 7)
4t = time(10, 30, 45)
5
6print(f"Date only: {d}")
7print(f"Time only: {t}")
  • La clase date maneja solo fechas, y la clase time maneja solo horas.

Conversión entre datetime y timestamp

Es posible la conversión entre marcas de tiempo UNIX y objetos datetime. Aquí, una marca de tiempo UNIX se refiere al número de segundos transcurridos desde el 1 de enero de 1970.

 1from datetime import datetime
 2
 3now = datetime.now()
 4
 5# datetime → timestamp
 6timestamp = now.timestamp()
 7print(f"Timestamp: {timestamp}")
 8
 9# timestamp → datetime
10restored = datetime.fromtimestamp(timestamp)
11print(f"Restored datetime: {restored}")
  • Este código convierte la fecha y hora actual a una marca de tiempo UNIX, y luego usa la función fromtimestamp() para convertir esa marca de tiempo de nuevo a un objeto datetime.

Errores comunes

Al usar el módulo datetime, debe tener en cuenta los siguientes puntos.

  • datetime.now() no considera las zonas horarias, por lo que para la internacionalización, debe usar explícitamente timezone.utc.
  • Tenga cuidado de no confundir %m (mes) y %M (minuto) en las cadenas de formato.

Resumen

El módulo datetime también ofrece muchas otras características para una manipulación flexible de fechas y horas. Además, hay clases como date, time y timedelta disponibles, especializadas para operaciones específicas.

El uso de otras bibliotecas también permite una manipulación de fechas más avanzada. Por ejemplo, pandas se especializa en manejar datos de series temporales, mientras que dateutil es adecuado para el análisis complejo de fechas. Además, la biblioteca arrow también es útil.

Puedes seguir el artículo anterior utilizando Visual Studio Code en nuestro canal de YouTube. Por favor, también revisa nuestro canal de YouTube.

YouTube Video