# | Fecha base | Celebración | Nombre festividad | Tipo |
01 | 01-ene | Fecha fija | Año nuevo | Cívica y Religiosa |
02 | 06-ene | Siguiente lunes | Epifanía | Religiosa |
03 | 19-mar | Siguiente lunes | San José | Religiosa |
04 | Pascua | -7 días | Domingo de Ramos | Religiosa |
05 | Pascua | -3 días | Jueves Santo | Religiosa |
06 | Pascua | -2 días | Viernes Santo | Religiosa |
07 | Pascua | El día de Pascua | Domingo de Pascua | Religiosa |
08 | 01-may | Fecha fija | Día del Trabajo | Cívica |
09 | Pascua | +43 días | Ascención de Jesús | Religiosa |
10 | Pascua | +64 dias | Corpus Christi | Religiosa |
11 | Pascua | +71 días | Sagrado Corazón de Jesús | Religiosa |
12 | 29-jun | Siguiente lunes | San Pedro y San Pablo | Religiosa |
13 | 20-jul | Fecha fija | Grito de Independencia | Cívica |
14 | 07-ago | Fecha fija | Batalla de Boyacá | Cívica |
15 | 15-ago | Siguiente lunes | Asunción de la Virgen | Religiosa |
16 | 12-oct | Siguiente lunes | Día de la Raza | Cívica |
17 | 01-nov | Siguiente lunes | Todos los Santos | Religiosa |
18 | 11-nov | Siguiente lunes | Independencia de Cartagena | Religiosa |
19 | 08-dic | Fecha fija | Inmaculada Concepción | Religiosa |
20 | 25-dic | Fecha fija | Navidad | Religiosa |
Como se puede apreciar en la tabla, con relación a la celebración hay tres tipos de festividades:
- Las de Fecha fija: Las cuales se celebran todos los años en la fecha base de la festividad.
- Las de Siguiente lunes: Las cuales se celebran el siguiente lunes con respecto a la fecha base de la festividad.
- Las relacionadas con la Pascua: Las cuales se celebran un cierto número de días con relación a la Pascua.
Para Colombia, en Microsof Project es posible automatizar esta tarea utilizando un código en Visual Basic que puede ser encontrado a continuación:
Sub FestivosColombia() ' Macro para colocar los festivos de Colombia ' Macro creada el 22/12/2012 por Jairo Bernal. Dim i As Integer, dia As Date, d As Integer, calendario As Calendar, dias As Integer Dim diasTexto As String, fechaFinEstimada As Date, fechaInicio As Date NewTasksStartOn OptionsViewEx ProjectSummary:=True OptionsViewEx DisplayOutlineNumber:=True ActiveProject.BaseCalendars(1).WeekDays(1).Default fechaInicio = ActiveProject.ProjectStart For i = 2 To 6 ActiveProject.BaseCalendars(1).WeekDays(i).Shift1.Start = "08:00" ActiveProject.BaseCalendars(1).WeekDays(i).Shift1.Finish = "12:00" ActiveProject.BaseCalendars(1).WeekDays(i).Shift2.Start = "13:00" ActiveProject.BaseCalendars(1).WeekDays(i).Shift2.Finish = "17:00" ActiveProject.BaseCalendars(1).WeekDays(i).Shift3.Clear ActiveProject.BaseCalendars(1).WeekDays(i).Shift4.Clear ActiveProject.BaseCalendars(1).WeekDays(i).Shift5.Clear Next i ActiveProject.BaseCalendars(1).WeekDays(7).Default dias = 0 Do While dias = 0 On Error Resume Next dias = 0 + InputBox("Ingrese el estimado en días para su Proyecto", "Días del Proyecto", 0) On Error GoTo 0 Loop fechaFinEstimada = DateAdd("d", dias, fechaInicio) For Each calendario In ActiveProject.BaseCalendars i = Year(fechaInicio) On Error Resume Next For i = i To Year(fechaFinEstimada) + 1 ' Año Nuevo calendario.Exceptions.Add 1, DateSerial(i, 1, 1), DateSerial(i, 1, 1), 1, "Año Nuevo " & i ' Epifanía dia = DateSerial(i, 1, 6) d = (9 - Weekday(dia)) Mod 7 dia = DateAdd("d", d, dia) calendario.Exceptions.Add 1, dia, dia, 1, "Epifanía " & i ' San José dia = DateSerial(i, 3, 19) d = (9 - Weekday(dia)) Mod 7 dia = DateAdd("d", d, dia) calendario.Exceptions.Add 1, dia, dia, 1, "San José " & i ' Jueves y Viernes Santos calendario.Exceptions.Add 1, FestivoComputus(i, -3), FestivoComputus(i, -2), 1, "Jueves y Viernes Santos " & i ' Día del Trabajo calendario.Exceptions.Add 1, DateSerial(i, 5, 1), DateSerial(i, 5, 1), 1, "Día del Trabajo " & i ' Ascención del Señor calendario.Exceptions.Add 1, FestivoComputus(i, 43), FestivoComputus(i, 43), 1, "Ascención del Señor " & i ' Corpus Christie calendario.Exceptions.Add 1, FestivoComputus(i, 64), FestivoComputus(i, 64), 1, "Corpus Christie " & i ' Sagrado Corazón calendario.Exceptions.Add 1, FestivoComputus(i, 71), FestivoComputus(i, 71), 1, "Sagrado Corazón " & i ' San Pedro y San Pablo dia = DateSerial(i, 6, 29) d = (9 - Weekday(dia)) Mod 7 dia = DateAdd("d", d, dia) calendario.Exceptions.Add 1, dia, dia, 1, "San Pedro y San Pablo " & i ' Grito de Independencia calendario.Exceptions.Add 1, DateSerial(i, 7, 20), DateSerial(i, 7, 20), 1, "Grito de Independencia " & i ' Batalla de Boyacá calendario.Exceptions.Add 1, DateSerial(i, 8, 7), DateSerial(i, 8, 7), 1, "Batalla de Boyacá " & i ' Asunción de la Virgen dia = DateSerial(i, 8, 15) d = (9 - Weekday(dia)) Mod 7 dia = DateAdd("d", d, dia) calendario.Exceptions.Add 1, dia, dia, 1, "Asunción de la Virgen " & i ' Día de la Raza dia = DateSerial(i, 10, 12) d = (9 - Weekday(dia)) Mod 7 dia = DateAdd("d", d, dia) calendario.Exceptions.Add 1, dia, dia, 1, "Día de la Raza " & i ' Todos los Santos dia = DateSerial(i, 11, 1) d = (9 - Weekday(dia)) Mod 7 dia = DateAdd("d", d, dia) calendario.Exceptions.Add 1, dia, dia, 1, "Todos los Santos " & i ' Independencia de Cartagena dia = DateSerial(i, 11, 11) d = (9 - Weekday(dia)) Mod 7 dia = DateAdd("d", d, dia) calendario.Exceptions.Add 1, dia, dia, 1, "Independencia de Cartagena " & i ' Inmaculada Concepcion calendario.Exceptions.Add 1, DateSerial(i, 12, 8), DateSerial(i, 12, 8), 1, "Inmaculada Concepcion " & i ' Navidad calendario.Exceptions.Add 1, DateSerial(i, 12, 25), DateSerial(i, 12, 25), 1, "Navidad " & i Next i On Error GoTo 0 Next End Sub Public Function DomingoPascua(Anio As Integer) As Date Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer Dim f As Integer, g As Integer, h As Integer, i As Integer Dim k As Integer, l As Integer, m As Integer, n As Integer Dim mes As Integer, día As Integer a = Anio Mod 19 b = Int(Anio / 100) c = Anio Mod 100 d = Int(b / 4) e = b Mod 4 f = Int((b + 8) / 25) g = Int((b - f + 1) / 3) h = (19 * a + b - d - g + 15) Mod 30 i = Int(c / 4) k = c Mod 4 l = (32 + 2 * e + 2 * i - h - k) Mod 7 m = Int((a + 11 * h + 22 * l) / 451) n = h + l - 7 * m + 114 mes = Int(n / 31) día = 1 + n Mod 31 DomingoPascua = DateSerial(Anio, mes, día) End Function Public Function FestivoComputus(Anio As Integer, Optional ss As Integer) As Date FestivoComputus = DateAdd("d", ss, DomingoPascua(Anio)) End Function