Módulos básicos.
Módulos de tiempo (datetime)
Mediante datetime podemos manejar fechas (date) y horas (time) de forma sencilla y eficiente. No es el único módulo que trabaja con este tipo de datos, pero posiblemente sí sea el más conocido y empleado.
Podríamos decir mucho de datetime, ya que es mucho lo que este módulo contiene, pero nos vamos a limitar a tratar de lo fundamental y de aquello que posiblemente más usemos en nuestros script. Puedes consultar [esta página] para más detalle (1).
Este módulo incorpora tres componentes principales: time, date y datetime, cuyas principales utilidades son:
- facilitar el acceso a los diferentes componentes de la referencia temporal (año, día, mes, hora, minuto, segundo, milisegundo)
- convertir cadenas con formato de fecha a los tipos referidos
- realizar el proceso inverso, esto es, convertir expresiones de los tipos time, date y datetime en cadenas formateadas
- realizar comparaciones y cálculos con fechas, como sumar o restar fechas
Voy a plantear, en lo que resta de entrada y a modo de ejemplos, algunas aplicaciones de datetime que me parecen de especial e inmediato interés para aplicar en la creación de script. Empezaré por el modo de importar el módulo y seguiré por algunas cuestiones que considero más comunes.
Para importar datetime tengo básicamente dos opciones:
- Importar el módulo al completo (import datetime)
- O importar cada uno de sus componentes de forma específica (from datetime import date, time, datetime)
Esta segunda forma es la más recomendable, nos permite diferenciar cada uno de los componentes de la clase con el que deseemos trabajar, incluyendo otros que ahora no mostramos.
Caso 1. Transformar una fecha dada como cadena a datetime.
Cuando usamos la función input() para la entrada de una fecha, lo que hacemos es proporcionar al script una cadena de texto. En Python, al contrario que en otros lenguajes (2), no existe una función de conversión directa, al margen de módulos como datetime. De ahí el interés por aprender a realizar este tipo de transformaciones.
Supongamos entonces la siguiente situación:
- Pido la fecha mediante input(), indicando el formato deseado:
fecha = input("Dime la fecha (dd/mm/aaa)")
- La transformo en un objeto date mediante la función strptime()
fecha_date= datetime.strptime(fecha,'%d/%m/%Y')
...observa que en el parámetro formato utilizo el mismo que he pedido en input()
Caso 2. Acceder a los componentes de la fecha.
Este acceso es la base para realizar manipulaciones y cálculos de diferente tipo. Partiendo de la trasformación anterior (variable fecha_date) es suficiente con aplicar los siguientes instrucciones:
Caso 3. Conocer el día y la hora actuales.año = fecha_date.year
mes = fecha_date.month
dia = fecha_date.day
Con frecuencia nos interesa conocer la fecha y hora actuales (del sistema) sin tener que recurrir a introducirla por teclado. Para ello haremos uso de algunas funciones disponibles en datetime (3).
hoy = date.today()ahora = datetime.now()
Faltan muchas instrucciones por explicar, ya que datetime es una clase muy extensa, así que posiblemente tengamos que realizar alguna que otra entrada más sobre este módulo, o sobre otros que también trabajan con unidades temporales, como time o calendar.
NOTAS
(1) En ella, entre otras muchas cosas, encontrarás enlaces a otros módulos Python que también trabajan con unidades temporales: time y calendar son los más conocidos. Otra referencia de interés, en este caso directamente orientada a la práctica, es esta [página de Alf]. Muy recomendable.
(2) Como es el caso de OOo Basic (CDate())
(3) Mientras que today() pertenece al objeto date, now() pertenece al objeto datetime.
