Python: Módulo: DateTime
El módulo datetime nos permite gestionar fechas y horas de forma muy sencilla
Podemos construir una fecha con su hora con el método constructor con el siguiente formato: datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0) especificando la fecha y hora, siendo sólo obligatorios el año, el mes y el día o con now() que nos crea con la fecha y hora actuales.
from datetime import datetime # 10 de junio de 2013 a las 22:43:02 # Sólo son obligatorios el año, el mes y el día # AAAA M DD HH MM SS fecha = datetime(2013, 6, 10, 22, 43, 12) fecha datetime.datetime(2013, 6, 10, 22, 43, 12) fecha = datetime.now() fecha datetime.datetime(2019, 1, 29, 19, 55, 48, 67435)
Una vez creada la fecha NO podemos modificar los valores por lo que tendremos que volver a crear con la nueva fecha.
Tenemos diversos métodos para obtener cada uno de los valores individuales:
from datetime import datetime
fecha = datetime.now()    # Fecha y hora actual
print(fecha)              # AAAA-MM-DD HH:MM:SS.microsegundos
print(fecha.year)         # año
print(fecha.month)        # mes
print(fecha.day)          # día
print(fecha.hour)         # hora
print(fecha.minute)       # minutos
print(fecha.second)       # segundos
print(fecha.microsecond)  # microsegundos
print("{}:{}:{}".format(fecha.hour, fecha.minute, fecha.second))
20:5:56
print("{}/{}/{}".format(fecha.day, fecha.month, fecha.year))
29/1/2019
Pero para poder mostrar fechas y horas formateadas de forma muy sencilla y potente tenemos el método strftime(format) que nos permite especificar como se muestra la fecha y hora:
from datetime import datetime
fecha = datetime.now()    # Fecha y hora actual
print(fecha.strftime("Las %H:%M:%S del %A %d de %B del %Y"))
Las 20:05:56 del Tuesday 29 de January del 2019
Como podemos ver el control es total pudiendo añadir texto y formato que queramos. Para un listado de todos los códigos de formateo tenemos: lista de códigos.
Por defecto el idioma es del sistema, si éste no fuese el correcto o que queremos podemos cambiarlo con locale.
Podemos realizar operaciones y cálculos con las fecha y horas para ello necesitamos importar el método timedelta y crear una variable con timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) que usaremos para operar con una fecha.
from datetime import datetime, timedelta
# Fecha y hora actual
fecha = datetime.now()
# creamos una variable con 1 semana
una_semana = timedelta(weeks=1)
una_semana_menos = fecha - una_semana
dos_semana_mas = fecha + una_semana + una_semana
print(fecha.strftime("Las %H:%M:%S del %A %d de %B del %Y"))
Las 20:05:56 del Tuesday 29 de January del 2019
print(una_semana_menos.strftime("Las %H:%M:%S del %A %d de %B del %Y"))
Las 20:24:50 del Tuesday 22 de January del 2019
print(dos_semana_mas.strftime("Las %H:%M:%S del %A %d de %B del %Y"))
Las 20:24:50 del Tuesday 05 de February del 2019
Para sacar que hora es en diferentes horarios del planeta podemos hacer lo siguiente:
from datetime import datetime, timedelta
import pytz
# Fecha y hora actual zona local (España)
fecha_local = datetime.now()
# Fecha y hora actual zona Nueva York
fecha_ny = datetime.now(pytz.timezone('America/New_York'))
print(fecha.strftime("Las %H:%M:%S del %A %d de %B del %Y"))
Las 20:38:00 del Tuesday 29 de January del 2019
print(fecha_ny.strftime("Las %H:%M:%S del %A %d de %B del %Y"))
Las 14:38:07 del Tuesday 29 de January del 2019
pytz mediante pip3 install pytz.
	Si queremos mostrar todas las zonas horarias:
print(pytz.all_timezones)
Más información en: datetime