Python Tutorial de CALENDÁRIO com exemplo
Módulo de calendário em Python possui a classe calendário que permite os cálculos para diversas tarefas com base em data, mês e ano. Além disso, as classes TextCalendar e HTMLCalendar em Python permite que você edite o calendário e use conforme sua necessidade.
Vamos ver o que podemos fazer com Python Calendário.
Passo 1) Execute o código.
- Linha de código nº 1: Começamos com “calendário de importação” que importará todas as classes deste módulo.
- Linha de código nº 3: c= calendar.TextCalendar(calendar.SUNDAY) diz ao intérprete para criar um calendário de texto. O início do mês será domingo. Em Python, você pode formatar o calendário, pois pode alterar o dia do mês para começar
- Linha de código nº 4: str= c.formatmonth(2025,1) Estamos criando um calendário para o ano de 2025, mês 1 – janeiro
- Linha de código nº 5: print str imprimirá a saída.
Vamos alterar rapidamente o valor de domingo para quinta e verificar o resultado
Passo 2) Você também pode imprimir o calendário em formato HTML. Este recurso é útil para desenvolvedores se eles quiserem fazer alguma alteração na aparência do calendário
Passo 3) Loops ao longo dos dias de um mês usando c.itermonthday (2025,4), ele irá buscar o número total de dias daquele mês.
- Quando você executa o código para obter o número total de dias de um mês específico, diga “abril”, você obterá 30 dias na saída, mas também verá alguns zeros junto com esses dias no início e às vezes no final dele .
- Zeros na saída significam que o dia da semana está em um mês sobreposto, o que significa que não pertence a esse mês.
- Esses zeros aparecem na saída porque, no seu código você mencionou o dia (quinta-feira), então quando você chamar a função “c.itermonthdays”, ela começará a contar os dias a partir de quinta-feira e sua quinta-feira pode não começar com a data 1st de abril pode ser 28th ou 29th de março, então quando você executar o código ele começará a contar os dias a partir de 28th de março e quaisquer dias depois disso até 1st de abril. Esses dias serão contados como zero e na saída você verá esses zeros e o mesmo se aplica ao final do mês.
- Portanto, exceto as datas de 1 a 30, todas as datas do mês anterior e posterior aparecerão na saída como zeros.
Passo 4) Você pode buscar os dados do sistema local, como meses ou dias da semana, etc.
- A saída aqui mostra que imprimimos o nome dos meses do sistema local. Da mesma forma, você também pode buscar o nome dos dias da semana conforme mostrado abaixo
-
A saída dependerá do sistema local, suponha que se o seu sistema local for de algum outro país, ele fornecerá a saída de acordo com as configurações locais desse país. Aqui temos meses então não vai fazer diferença mas se for uma semana ou um dia certamente vai ser diferente.
Passo 5) Você pode buscar a lista do dia específico de um ano inteiro. Por exemplo, há um dia de auditoria em cada primeiro Monday de uma semana. Você quer saber a data do primeiro Monday para cada mês. Você pode usar este código
- mycal = calendar.monthcalendar(2025, mês) criará um calendário para o mês
- Defina as variáveis semana1 e semana2 para a primeira e segunda semana do calendário
- Verifique se a Semana 1 contém Monday, definir o dia da auditoria
- Caso contrário, defina o dia da auditoria como o primeiro Monday na semana 2
- A saída mostra a data do primeiro Monday que cai naquele mês.
- A duração deste objeto Cal terá uma determinada duração, com base em quantas semanas existem no mês. No nosso caso, será um ou dois primeiro Monday da semana ocorrerá na primeira semana com mais frequência, mas se não, considere a segunda semana. Vamos ver em detalhes porque consideramos também a segunda semana.
- Aqui estamos usando a constante do calendário Monday, o objeto calendário fornece constantes que representam domingo, Monday, terça-feira, e assim por diante. Já vimos isso anteriormente. Então, se na primeira semana o dia representado pelo Monday constante não é igual a 0, lembre-se que zeros significam dias que pertencem a outro mês. Então, neste caso, se for zero, será um Monday que pertence ao mês anterior. Mas se o primeiro Monday não for igual a 0, isso significa que meu dia de auditoria será dentro da semana um. Caso contrário, se for 0, então o primeiro Monday não é na primeira semana do mês, tem que ser na segunda.
- Então eu digo ok, defina minha variável do dia da auditoria como o Monday representado pela semana dois. Portanto, o dia da auditoria voltará com qualquer que seja o dia da primeira ou da segunda semana.
Aqui está o código completo
Python 2 Exemplo
import calendar # Create a plain text calendar c = calendar.TextCalendar(calendar.THURSDAY) str = c.formatmonth(2025, 1, 0, 0) print str # Create an HTML formatted calendar hc = calendar.HTMLCalendar(calendar.THURSDAY) str = hc.formatmonth(2025, 1) print str # loop over the days of a month # zeroes indicate that the day of the week is in a next month or overlapping month for i in c.itermonthdays(2025, 4): print i # The calendar can give info based on local such a names of days and months (full and abbreviated forms) for name in calendar.month_name: print name for day in calendar.day_name: print day # calculate days based on a rule: For instance an audit day on the second Monday of every month # Figure out what days that would be for each month, we can use the script as shown here for month in range(1, 13): # It retrieves a list of weeks that represent the month mycal = calendar.monthcalendar(2025, month) # The first MONDAY has to be within the first two weeks week1 = mycal[0] week2 = mycal[1] if week1[calendar.MONDAY] != 0: auditday = week1[calendar.MONDAY] else: # if the first MONDAY isn't in the first week, it must be in the second week auditday = week2[calendar.MONDAY] print "%10s %2d" % (calendar.month_name[month], auditday)
Python 3 Exemplo
import calendar # Create a plain text calendar c = calendar.TextCalendar(calendar.THURSDAY) str = c.formatmonth(2025, 1, 0, 0) print(str) # Create an HTML formatted calendar hc = calendar.HTMLCalendar(calendar.THURSDAY) str = hc.formatmonth(2025, 1) print(str) # loop over the days of a month # zeroes indicate that the day of the week is in a next month or overlapping month for i in c.itermonthdays(2025, 4): print(i) # The calendar can give info based on local such a names of days and months (full and abbreviated forms) for name in calendar.month_name: print(name) for day in calendar.day_name: print(day) # calculate days based on a rule: For instance an audit day on the second Monday of every month # Figure out what days that would be for each month, we can use the script as shown here for month in range(1, 13): # It retrieves a list of weeks that represent the month mycal = calendar.monthcalendar(2025, month) # The first MONDAY has to be within the first two weeks week1 = mycal[0] week2 = mycal[1] if week1[calendar.MONDAY] != 0: auditday = week1[calendar.MONDAY] else: # if the first MONDAY isn't in the first week, it must be in the second week auditday = week2[calendar.MONDAY] print("%10s %2d" % (calendar.month_name[month], auditday))
Resumo
- In Python, você pode formatar o calendário da maneira que desejar, pois pode alterar o dia do mês para começar
- Imprima o calendário em formato HTML
- Busque os dados do sistema local, como meses ou dias da semana
- Obtenha a lista do dia específico de um ano inteiro