¡Esta es una revisión vieja del documento!
Tabla de Contenidos
Python: Fechas
import datetime as dt # from datetime import datetime
Creación
Fecha actual:
d = dt.datetime.now() print(d) # Resultado # 2020-11-13 15:53:49.883446
Al imprimir un objeto de tipo datetime obtenemos año, mes, día, minutos, segundos y microsegundos.
Fecha:
d = dt.date(2020, 12, 31)
Fecha y hora:
from datetime import datetime d = datetime(2020, 12, 31, 12, 59, 59)
Para poder ver la fecha como una cadena de caracteres:
str(d) # Resultado: # 2020-12-31 12:59:59
Otra forma de formatear una fecha es utilizando el método strftime():
fecha.strftime("%Y-%m-%d %H:%M:%S")
Zona horaria
Los objetos DateTime en Python no tienen en cuenta la zona horaria debemos hacer que sean conscientes. Para ello nos ayudamos del módulo pytz:
from datetime import datetime import pytz # Listas las diferentes zonas horarias que tiene Pytz: for tz in pytz.all_timezones: print(tz) # Fecha y hora actual en la zona horaria actual now = datetime.now() print(now) # Resultado # 2020-11-13 17:16:04.477517 # Creamos una hora en UTC (aunque no tiene información sobre zona horaria) utcnow = datetime.utcnow() # Asignamos una zona horaria al objeto anterior utcnow = utcnow.replace(tzinfo=pytz.utc) print(utcnow) # Resultado # 2020-11-13 16:16:04.477517+00:00
Por regla general, se recomienda guardar las fechas en UTC y hacer posteriormente las conversiones a la zona horaria deseada
Para convertir zonas horarias:
madrid = utcnow.astimezone(pytz.timezone("Europe/Madrid")) print(madrid)
Extracción
import datetime as dt x = dt.datetime.now() print(x.year) # Extrae el año print(x.month) # Extrae el mes print(x.day) # Extrae el día print(x.hour) # Extrae la hora print(x.minute) # Extrae los minutos
Atributos
.year: extrae el año de una fecha..month: extrae el mes..day: extrae el día..hour: horas..minute: minutos..second: segundos.
d = dt.date(2020, 12, 31) d.year # 2020 d.month # 12 d.day # 31
Formatos
Para formatear la fecha, se puede utilizar el método strftime():
print(d.strftime("%A") # Nombre del día de la semana (en inglés)
| Directiva | Descripción | Ejemplo |
|---|---|---|
%a | Día de la semana (breve) | Wed |
%A | Día de la semana | Wednesday |
%Y | Año | 2019 |
%m | Número del mes (con cero inicial) | 03 |
%d | Día del mes (con cero inicial) | 09 |
%H | Hora (con cero inicial) | 02 |
%M | Minutos (con cero inicial) | 58 |
%S | Segundos (con cero inicial) | 59 |
%f | Microsegundos | 131488 |
%b | Nombre del mes (breve) | Dec |
%B | Nombre del mes | December |
%Z | Zona horaria | CST |
Comparación
Con objetos de tipo DateTime se pueden hacer comparaciones utilizando los operadores de comparación (<, >, ==…)
import datetime # date and time in yyyy/mm/dd hh:mm:ss format d1 = datetime.datetime(2020, 5, 13, 22, 50, 55) d2 = datetime.datetime(2020, 7, 13, 22, 50, 55) print(d1 < d2) # True print(d1 > d2) # False
Fecha
Si solo queremos comparar la fecha (año, mes y día):
import datetime # date and time in yyyy/mm/dd hh:mm:ss format d1 = datetime.datetime(2020, 5, 13, 22, 50, 55) d2 = datetime.datetime(2020, 7, 13, 22, 50, 55) print(d1.date() < d2.date()) # True print(d1.date() > d2.date()) # False
Tiempo
Para comparar solo el tiempo (horas, minutos, segundos…)
import datetime as dt # date and time in yyyy/mm/dd hh:mm:ss format d1 = dt.datetime(2020, 5, 13, 22, 50, 55) d2 = dt.datetime(2020, 5, 13, 7, 50, 55) d3 = dt.datetime(2020, 6, 13, 22, 50, 55) print(d1.time() == d2.time()) # False print(d1.time() == d3.time()) # True print(d1.time() < d2.time()) # False print(d1.time() < d3.time()) # False print(d1.time() > d2.time()) # True print(d1.time() > d3.time()) # False
