Manejo de calendario en python con la librería calendar
El artículo se basa en el artículo en inglés de:
La librería calendar permite desplegar meses de un año, lo primero que tenemos que hacer es importar la librería.
import calendar
Desplegar el calendario del año y mes:
Se define las variables aÑo y mes, se llama a calendar al método month pasando estas variables, devuelve el calendario del mes y año definido.
year = 2023 month = 3 print(calendar.month(year, month))
March 2023 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Desplegar el calendario del año 2023:
Se define el aÑo del calendario y luego se muestra todos los meses.
year = 2023 print(calendar.calendar(year))
2023 January February March Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 1 2 3 4 5 1 2 3 4 5 2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12 9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19 16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26 23 24 25 26 27 28 29 27 28 27 28 29 30 31 30 31 April May June Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 1 2 3 4 5 6 7 1 2 3 4 3 4 5 6 7 8 9 8 9 10 11 12 13 14 5 6 7 8 9 10 11 10 11 12 13 14 15 16 15 16 17 18 19 20 21 12 13 14 15 16 17 18 17 18 19 20 21 22 23 22 23 24 25 26 27 28 19 20 21 22 23 24 25 24 25 26 27 28 29 30 29 30 31 26 27 28 29 30 July August September Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 2 1 2 3 4 5 6 1 2 3 3 4 5 6 7 8 9 7 8 9 10 11 12 13 4 5 6 7 8 9 10 10 11 12 13 14 15 16 14 15 16 17 18 19 20 11 12 13 14 15 16 17 17 18 19 20 21 22 23 21 22 23 24 25 26 27 18 19 20 21 22 23 24 24 25 26 27 28 29 30 28 29 30 31 25 26 27 28 29 30 31 October November December Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su 1 1 2 3 4 5 1 2 3 2 3 4 5 6 7 8 6 7 8 9 10 11 12 4 5 6 7 8 9 10 9 10 11 12 13 14 15 13 14 15 16 17 18 19 11 12 13 14 15 16 17 16 17 18 19 20 21 22 20 21 22 23 24 25 26 18 19 20 21 22 23 24 23 24 25 26 27 28 29 27 28 29 30 25 26 27 28 29 30 31 30 31
Clase Calendar
La clase calendar permite crear un objecto calendario, el cual permite obtener información del calendario y darle formato de salida.
Como usar la clase calendar:
- El método iterweekdays():
Permite iterar sobre los días de la semana, el método devuelve un iterador que itera sobre los días de la semana, el primer día de la semana es el lunes, el último es el domingo.
import calendar cal = calendar.calendar() for dia in cal.iterweekdays(): print(dia,end=' ')
0 1 2 3 4 5 6
Entonces devuelve lunes, martes, miércoles, jueves, viernes, sábado y domingo.
- El método monthdayscalendar():
El método permite iterar sobre todo el mes, los días de cada semana.
cal = calendar.Calendar() for mes in cal.monthdayscalendar(2023,3): print(mes)
[0, 0, 1, 2, 3, 4, 5] [6, 7, 8, 9, 10, 11, 12] [13, 14, 15, 16, 17, 18, 19] [20, 21, 22, 23, 24, 25, 26] [27, 28, 29, 30, 31, 0, 0]
Clase TextCalendar
Esta es una clase que se usa para generar calendarios en formato texto.
- El método formatmonth():
Generada la salida del mes en formato calendario pero en texto.
textcal = calendar.TextCalendar() year = 2023 month = 3 w = 4 # ancho de cada columna l = 2 # número de líneas por semana print(textcal.formatmonth(year, month, w, l))
March 2023 Mo Tu We Th Fr Sa Su 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
- El método prmonth():
Este método imprime el mes en formato calendario retornado por el método formatmonth. Toma los mismos argumentos del método formatmonth.
textcal.prmonth(year,month,6,3)
March 2023 Mon Tue Wed Thu Fri Sat Sun 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
Clase HTMLCalendar
Se usa para generar los calendarios en formato html.
- El método formatmonth():
htmlcal = calendar.HTMLCalendar() print(htmlcal.formatmonth(2023, 3))
<table border="0" cellpadding="0" cellspacing="0" class="month"> <tr><th colspan="7" class="month">March 2023</th></tr> <tr><th class="mon">Mon</th><th class="tue">Tue</th><th class="wed">Wed</th><th class="thu">Thu</th><th class="fri">Fri</th><th class="sat">Sat</th><th class="sun">Sun</th></tr> <tr><td class="noday"> </td><td class="noday"> </td><td class="wed">1</td><td class="thu">2</td><td class="fri">3</td><td class="sat">4</td><td class="sun">5</td></tr> <tr><td class="mon">6</td><td class="tue">7</td><td class="wed">8</td><td class="thu">9</td><td class="fri">10</td><td class="sat">11</td><td class="sun">12</td></tr> <tr><td class="mon">13</td><td class="tue">14</td><td class="wed">15</td><td class="thu">16</td><td class="fri">17</td><td class="sat">18</td><td class="sun">19</td></tr> <tr><td class="mon">20</td><td class="tue">21</td><td class="wed">22</td><td class="thu">23</td><td class="fri">24</td><td class="sat">25</td><td class="sun">26</td></tr> <tr><td class="mon">27</td><td class="tue">28</td><td class="wed">29</td><td class="thu">30</td><td class="fri">31</td><td class="noday"> </td><td class="noday"> </td></tr> </table>
Al tomar el código y pasarlo por codepen se tiene:
Esta librería facilita la visualización de calendarios anual y/o por mes.