Crie um calendário HTML dinamicamente em Python

Python's calendário O módulo faz parte da biblioteca padrão. Ele permite a saída de um calendário por mês ou ano e também fornece outras funcionalidades relacionadas ao calendário.

o calendário O módulo em si depende do módulo datetime. Mas também precisaremos data hora para nossos próprios propósitos posteriormente, então é melhor importar os dois. Além disso, para fazer uma divisão de cordas, precisaremos do módulo. Vamos importá-los todos de uma só vez.

Por padrão, os calendários começam a semana com segunda-feira (dia 0), de acordo com a convenção européia, e terminam com domingo (dia 6). Se você preferir domingo como o primeiro dia da semana, use o setfirstweekday () método para alterar o padrão para o dia 6 da seguinte maneira:

Para alternar entre os dois, você pode passar o primeiro dia da semana como argumento usando o sys módulo. Você então verificaria o valor com um E se declaração e defina o setfirstweekday () método em conformidade.

Em nosso calendário, seria bom ter um cabeçalho para o calendário com algo como "Um calendário gerado por Python para ..." e ter o mês e o ano atuais. Para fazer isso, precisamos obter o mês e o ano do sistema. Essa funcionalidade é algo que

instagram viewer
calendário fornece, o Python pode recuperar o mês e o ano. Mas ainda temos um problema. Como todas as datas do sistema são numéricas e não contêm formas abreviadas ou não numéricas dos meses, precisamos de uma lista desses meses. Entre na lista ano.

Agora, quando obtemos o número de um mês, podemos acessar esse número (menos um) na lista e obter o nome completo do mês.

Curiosamente, o data hora módulo tem um data hora classe. É dessa classe que chamamos de dois objetos: agora() e encontro(). O método datetime.datetime.now () retorna um objeto que contém as seguintes informações: ano, mês, data, hora, minuto, segundo e microssegundos. Obviamente, não precisamos de informações de tempo. Para selecionar apenas as informações da data, passamos os resultados de agora() para datetime.datetime.date () como argumento. O resultado é que hoje agora contém o ano, mês e data separados por traços.

Para dividir esse bit de dados em partes mais gerenciáveis, precisamos dividi-lo. Podemos então atribuir as partes às variáveis current_yr, mês atuale dia atual respectivamente.

Para entender a primeira linha desse código, trabalhe da direita para a esquerda e de dentro para fora. Primeiro, restringimos o objeto hoje para operar nele como uma corda. Em seguida, nós o dividimos usando o traço como um delimitador ou token. Por fim, atribuímos esses três valores como uma lista a 'atual'.

Para lidar com esses valores de maneira mais distinta e chamar o nome longo do mês atual de ano, atribuímos o número do mês a current_no. Podemos então fazer um pouco de subtração no índice de ano e atribua o nome do mês a mês atual.

Na próxima linha, é necessário um pouco de substituição. A data retornada de data hora é um valor de dois dígitos, mesmo nos primeiros nove dias do mês. Um zero funciona como um marcador de posição, mas preferimos que nosso calendário tenha apenas um dígito. Portanto, não substituímos nenhum valor por cada zero que inicia uma string (daí '\ A'). Por fim, atribuímos o ano a current_yr, convertendo-o em um número inteiro ao longo do caminho.

Os métodos que chamaremos mais tarde exigirão entrada no formato inteiro. Portanto, é importante garantir que todos os dados da data sejam salvos no formato inteiro, não na sequência.

Antes de imprimir o calendário, precisamos imprimir oHTML preâmbulo e layout CSS para o nosso calendário. Vá para esta página para obter o código para imprimir o preâmbulo CSS e HTML do calendário. e copie o código no seu arquivo de programa. O CSS no HTML deste arquivo segue o modelo oferecido por Jennifer Kyrnin, About's Guide to Web Design. Se você não entender essa parte do código, consulte as ajudas dela para aprender CSS e HTML. Por fim, para personalizar o nome do mês, precisamos da seguinte linha:

Agora que o layout básico foi produzido, podemos configurar o próprio calendário. Um calendário, no seu ponto mais básico, é uma tabela. Então, vamos criar uma tabela em nosso HTML:

Agora precisamos criar o calendário real. Para obter os dados reais do calendário, precisamos do calendário módulo monthcalendar () método. Este método usa dois argumentos: o ano e o mês do calendário desejado (ambos na forma de número inteiro). Retorna uma lista que contém listas das datas do mês por semana. Portanto, se contarmos o número de itens no valor retornado, teremos o número de semanas no mês especificado.

Sabendo o número de semanas no mês, podemos criar um para loop que conta através de um alcance() de 0 ao número de semanas. Assim, imprimirá o restante do calendário.

Após o início desse intervalo, as datas da semana são selecionadas de mês de acordo com o valor do contador e atribuído a semana. Em seguida, uma linha tabular é criada para manter as datas do calendário.

UMA para O loop percorre os dias da semana para que possam ser analisados. o calendário O módulo imprime um '0' para cada data na tabela que não possui um valor válido. Como um valor em branco funcionaria melhor para nossos propósitos, imprimimos os suportes para livros de dados tabulares sem um valor para essas datas.

Em seguida, se o dia é o atual, devemos destacá-lo de alguma forma. Com base no td classe hoje, o CSS desta página fará com que a data atual seja renderizada em um plano de fundo escuro, em vez do plano de fundo claro das outras datas.

Por fim, se a data for um valor válido e não a data atual, ela será impressa como dados tabulares. As combinações exatas de cores são mantidas no preâmbulo do estilo CSS.

Apenas esse calendário simples pode ser usado de qualquer maneira que precise de uma representação do calendário. Ao vincular as datas no HTML, é possível criar facilmente uma funcionalidade do diário. Como alternativa, pode-se verificar um arquivo de diário e depois refletir quais datas são escolhidas por sua cor. Ou, se alguém converter esse programa em um script CGI, poderá gerá-lo em tempo real.

instagram story viewer