Módulo Python datetime

de PythondatetimeEl módulo es un módulo de la biblioteca estándar para manejar fechas y horas. Proporciona varias clases y funciones que nos ayudan a manejar fácilmente operaciones como fechas, horas, diferencias de tiempo, etc. Ya sea obtener la hora actual, formatear fechas o calcular diferencias de tiempo,datetimeel módulo puede encargarse de todo.

Clases principales del módulo datetime

datetimeEl módulo contiene las siguientes clases principales:

  • dateClase -dateLa clase se usa para representar la fecha, con tres atributos: año, mes, día.

  • timeClase -timeLa clase se usa para representar la hora, con atributos como hora, minuto, segundo, microsegundo.

  • datetimeClase -datetimeLa clase esdateytimela combinación de ambos, puede representar fecha y hora al mismo tiempo.

  • timedeltaClase -timedeltaLa clase se usa para representar diferencias de tiempo, y puede usarse para sumar y restar fechas y horas.


Usar el módulo datetime

Obtener la fecha y hora actuales

Podemos usardatetimede la clasenow()el método para obtener la fecha y hora actuales.

Ejemplo

from datetime import datetime

# Obtener la fecha y hora actuales
now = datetime.now()
print("Hora actual:", now)

Ejemplo de salida:

当前时间: 2025-04-22 14:30:45.123456

Crear una fecha y hora específicas

Podemos, mediantedatetimeel constructor de la clase, crear una fecha y hora específicas.

Ejemplo

from datetime import datetime

# Crear una fecha y hora específicas
specific_time = datetime(2025, 4, 22, 15, 30, 0)
print("Hora específica:", specific_time)

Ejemplo de salida:

特定时间: 2025-04-22 15:30:00

Formatear fecha y hora

datetimeEl objeto puede, mediantestrftime()el método, formatearse como cadena.

Ejemplo

from datetime import datetime

# Obtener la hora actual
now = datetime.now()

# Formatear la salida
formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
print("Hora formateada:", formatted_time)

Ejemplo de salida:

格式化时间: 2025-04-22 14:30:45

Calcular la diferencia de tiempo

timedeltaLa clase se puede usar para calcular la diferencia entre dos fechas u horas.

Ejemplo

from datetime import datetime, timedelta

# Obtener la hora actual
now = datetime.now()

# Calcular el tiempo dentro de 10 días
future_time = now + timedelta(days=10)
print("Tiempo dentro de 10 días:", future_time)

Ejemplo de salida:

10 天后的时间: 2025-05-02 14:30:45.123456

Casos de uso comunes

Calcular los días entre dos fechas

Ejemplo

from datetime import date

# Crear dos fechas
date1 = date(2025, 4, 22)
date2 = date(2025, 5, 1)

# Calcular la diferencia de días
delta = date2 - date1
print("Diferencia de días entre dos fechas:", delta.days)

Ejemplo de salida:

两个日期之间的天数差: 9

Manejo de zonas horarias

datetimeEl módulo en sí no admite directamente operaciones de zona horaria, pero se puede usarpytzla biblioteca para manejar la zona horaria.

Ejemplo

from datetime import datetime
import pytz

# Obtener la hora actual y configurar la zona horaria
now = datetime.now(pytz.timezone('Asia/Shanghai'))
print("Hora actual de Shanghái:", now)

Ejemplo de salida:

上海当前时间: 2025-04-22 14:30:45.123456+08:00

Clases, métodos y atributos comunes

1. Clases principales

Clase Descripción Ejemplo
datetime.date Clase de fecha (año, mes, día) date(2023, 5, 15)
datetime.time Clase de hora (hora, minuto, segundo, microsegundo) time(14, 30, 0)
datetime.datetime Clase de fecha y hora (incluye fecha y hora) datetime(2023, 5, 15, 14, 30)
datetime.timedelta Clase de intervalo de tiempo (para cálculos de fecha/hora) timedelta(days=5)
datetime.tzinfo Clase base de información de zona horaria (requiere subclase para implementarse) Clase de zona horaria personalizada

2. dateMétodos/atributos comunes del objeto

Método/Atributo Descripción Ejemplo
date.today() Devuelve la fecha local actual date.today() → date(2023, 5, 15)
date.fromisoformat(str) desdeYYYY-MM-DDAnaliza una fecha desde una cadena date.fromisoformat("2023-05-15")
date.year Año (solo lectura) d.year → 2023
date.month Mes (1-12, solo lectura) d.month → 5
date.day Día (1-31, solo lectura) d.day → 15
date.weekday() Devuelve el día de la semana (0=lunes, 6=domingo) d.weekday() → 0
date.isoformat() DevuelveYYYY-MM-DDuna cadena de formato d.isoformat() → "2023-05-15"
date.strftime(format) Salida formateada personalizada d.strftime("%Y/%m/%d") → "2023/05/15"

3. timeMétodos/atributos comunes del objeto

Método/Atributo Descripción Ejemplo
time.hour Hora (0-23, solo lectura) t.hour → 14
time.minute Minuto (0-59, solo lectura) t.minute → 30
time.second Segundo (0-59, solo lectura) t.second → 0
time.microsecond Microsegundo (0-999999, solo lectura) t.microsecond → 0
time.isoformat() DevuelveHH:MM:SS.mmmmmmuna cadena de formato t.isoformat() → "14:30:00"
time.strftime(format) Salida formateada personalizada t.strftime("%H:%M") → "14:30"

4. datetimeMétodos/atributos comunes del objeto

Método/Atributo Descripción Ejemplo
datetime.now() Devuelve la fecha y hora local actuales datetime.now() → datetime(2023, 5, 15, 14, 30, 0)
datetime.utcnow() Devuelve la fecha y hora UTC actuales datetime.utcnow()
datetime.fromtimestamp(ts) Crea, desde una marca de tiempo,datetimeel objeto. datetime.fromtimestamp(1684146600)
datetime.timestamp() Devuelve la marca de tiempo (segundos como flotante) dt.timestamp() → 1684146600.0
datetime.date() Extrae la parte de la fecha dt.date() → date(2023, 5, 15)
datetime.time() Extrae la parte de la hora dt.time() → time(14, 30)
datetime.year Año (igual quedate) dt.year → 2023
datetime.strftime(format) Salida formateada personalizada dt.strftime("%Y-%m-%d %H:%M") → "2023-05-15 14:30"

5. timedeltaAtributos comunes del objeto

Atributo Descripción Ejemplo
days Días (puede ser positivo o negativo) delta.days → 5
seconds Segundos (0-86399) delta.seconds → 3600(1 hora)
microseconds Microsegundos (0-999999) delta.microseconds → 0

6. Símbolos de formato comunes (strftime)

Símbolo Descripción Salida de ejemplo
%Y Año de cuatro dígitos 2023
%m Mes de dos dígitos (01-12) 05
%d Día de dos dígitos (01-31) 15
%H Hora en formato de 24 horas (00-23) 14
%M Minuto (00-59) 30
%S Segundo (00-59) 00
%A Nombre completo del día de la semana Monday
%a Nombre abreviado del día de la semana Mon
%B Nombre completo del mes May
%b Nombre abreviado del mes May

Ejemplo

1. Calcular la diferencia de fechas

Ejemplo

from datetime import date, timedelta

d1 = date(2023, 5, 15)
d2 = date(2023, 6, 1)
delta = d2 - d1  # Devolver el objeto timedelta
print(delta.days)  # Salida: 17

2. Suma y resta de tiempo

Ejemplo

from datetime import datetime, timedelta

now = datetime.now()
future = now + timedelta(days=3, hours=2)
print(future.strftime("%Y-%m-%d %H:%M"))

3. Conversión de zona horaria (requiere instalar pytz)

Ejemplo

from datetime import datetime
import pytz

utc_time = datetime.utcnow().replace(tzinfo=pytz.utc)
beijing_time = utc_time.astimezone(pytz.timezone("Asia/Shanghai"))
print(beijing_time)

4. Analizar cadenas

Ejemplo

from datetime import datetime

dt = datetime.strptime("2023-05-15 14:30", "%Y-%m-%d %H:%M")
print(dt.year)  # Salida: 2023

Notas importantes

  1. Inmutabilidad: todosdatetimelos objetos son inmutables; las operaciones devuelven objetos nuevos.

  2. Manejo de zona horaria: nativosdatetimesin soporte de zona horaria, se necesita usarpytzo el de Python 3.9+zoneinfo。

  3. Rendimiento: crear objetos con frecuencia puede afectar al rendimiento; considera reutilizarlos o almacenarlos en caché.

  4. Verificación de límites: fechas no válidas (comodate(2023, 2, 30)) activaránValueError。

Otras extensiones