Crear un calendario HTML en Python dinámicamente

Python calendario El módulo es parte de la biblioteca estándar. Permite la salida de un calendario por mes o por año y también proporciona otra funcionalidad relacionada con el calendario.

los calendario módulo en sí depende del módulo de fecha y hora. Pero también necesitaremos fecha y hora para nuestros propios fines más adelante, por lo que es mejor importar ambos. Además, para dividir algunas cadenas, necesitaremos el re módulo. Importémoslos todos de una vez.

Por defecto, los calendarios comienzan la semana con el lunes (día 0), según la convención europea, y finalizan con el domingo (día 6). Si prefiere el domingo como primer día de la semana, use el setfirstweekday () Método para cambiar el valor predeterminado al día 6 de la siguiente manera:

Para alternar entre los dos, puede pasar el primer día de la semana como argumento utilizando el sys módulo. Luego verificaría el valor con un Si declaración y establecer el setfirstweekday () método en consecuencia.

En nuestro calendario, sería bueno tener un encabezado para el calendario que diga algo así como "Un calendario generado por Python para ..." y tener el mes y año actual. Para hacer esto, necesitamos obtener el mes y el año del sistema. Esta funcionalidad es algo que

instagram viewer
calendario proporciona, Python puede recuperar el mes y el año. Pero aún tenemos un problema. Como todas las fechas del sistema son numéricas y no contienen formas no abreviadas o no numéricas de los meses, necesitamos una lista de esos meses. Entra en la lista año.

Ahora, cuando obtenemos el número de un mes, podemos acceder a ese número (menos uno) en la lista y obtener el nombre completo del mes.

Curiosamente, el fecha y hora el módulo tiene un fecha y hora clase. Es de esta clase que llamamos dos objetos: ahora() y fecha(). El método datetime.datetime.now () devuelve un objeto que contiene la siguiente información: año, mes, fecha, hora, minuto, segundo y microsegundos. Por supuesto, no necesitamos la información del tiempo. Para eliminar solo la información de la fecha, pasamos los resultados de ahora() a datetime.datetime.date () como argumento El resultado es que hoy ahora contiene el año, mes y fecha separados por guiones cortos.

Para dividir este bit de datos en partes más manejables, debemos dividirlo. Entonces podemos asignar las partes a las variables current_yr, mes actualy día actual respectivamente.

Para comprender la primera línea de este código, trabaje de derecha a izquierda y de adentro hacia afuera. Primero, stringificamos el objeto hoy para operarlo como una cadena. Luego, lo dividimos usando el em-dash como delimitador o token. Finalmente, asignamos esos tres valores como una lista a 'actual'.

Para tratar estos valores de manera más distintiva y llamar el nombre largo del mes actual fuera de año, asignamos el número del mes a current_no. Entonces podemos hacer un poco de resta en el subíndice de año y asigne el nombre del mes a mes actual.

En la siguiente línea, se necesita un poco de sustitución. La fecha de devolución de fecha y hora es un valor de dos dígitos incluso para los primeros nueve días del mes. Un cero funciona como un marcador de posición, pero preferimos que nuestro calendario tenga solo un dígito. Por lo tanto, no sustituimos ningún valor por cada cero que comienza una cadena (de ahí '\ A'). Finalmente, asignamos el año a current_yr, convirtiéndolo en un entero en el camino.

Los métodos que llamaremos más adelante requerirán una entrada en formato entero. Por lo tanto, es importante asegurarse de que todos los datos de la fecha se guarden en forma de entero, no de cadena.

Antes de imprimir el calendario, necesitamos imprimir elHTML preámbulo y diseño CSS para nuestro calendario. Vaya a esta página para obtener el código para imprimir el preámbulo CSS y HTML para el calendario. y copie el código en su archivo de programa. El CSS en el HTML de este archivo sigue la plantilla ofrecida por Jennifer Kyrnin, About's Guide to Web Design. Si no comprende esta parte del código, puede consultar sus ayudas para aprender CSS y HTML. Finalmente, para personalizar el nombre del mes, necesitamos la siguiente línea:

Ahora que se emite el diseño básico, podemos configurar el calendario en sí. Un calendario, en su punto más básico, es una tabla. Así que hagamos una tabla en nuestro HTML:

Ahora necesitamos crear el calendario real. Para obtener los datos reales del calendario, necesitamos el calendario módulo mescalendario () método. Este método toma dos argumentos: el año y el mes del calendario deseado (ambos en forma entera). Devuelve una lista que contiene listas de las fechas del mes por semana. Entonces, si contamos el número de artículos en el valor devuelto, tenemos el número de semanas en el mes dado.

Conociendo la cantidad de semanas en el mes, podemos crear un para bucle que cuenta a través de un rango() de 0 a la cantidad de semanas. Mientras lo hace, imprimirá el resto del calendario.

Después de que este rango ha comenzado, las fechas de la semana se seleccionan de mes de acuerdo con el valor del contador y asignado a semana. Luego, se crea una fila tabular para contener las fechas del calendario.

UN para loop luego recorre los días de la semana para que puedan analizarse. los calendario El módulo imprime un '0' para cada fecha en la tabla que no tiene un valor válido. Un valor en blanco funcionaría mejor para nuestros propósitos, por lo que imprimimos los sujetalibros de datos tabulares sin un valor para esas fechas.

Luego, si el día es el actual, deberíamos resaltarlo de alguna manera. Basado en el td clase hoy, el CSS de esta página hará que la fecha actual se represente con un fondo oscuro en lugar del fondo claro de las otras fechas.

Finalmente, si la fecha es un valor válido y no es la fecha actual, se imprime como datos tabulares. Las combinaciones de colores exactas para estos se mantienen en el preámbulo de estilo CSS.

Solo este calendario simple puede usarse de cualquier manera que necesite una representación de calendario. Al hipervincular las fechas en el HTML, se puede crear fácilmente una funcionalidad de diario. Alternativamente, se puede verificar un archivo de diario y luego reflejar qué fechas se toman por su color. O, si uno convierte este programa en un script CGI, puede generarlo sobre la marcha.

instagram story viewer