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
usandostrptime()
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 clasetimezone
ozoneinfo
.
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 clasetime
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 objetodatetime
.
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ícitamentetimezone.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.