Código |
<?php // :: Funciones comunes para otras clases :: class cl_common { // Devuelve HTML de legibilidad facilitada de un arreglo function showArray($ar) { return '<pre style="padding:10px; background-color:#ccc;">' . print_r($ar, true) . '</pre>'; } } // :: Cálculo de fechas de semana santa a partir de la función easter_days de PHP :: class cl_holyWeek extends cl_common { // Devuelve la fecha del "Domingo de Resurrección" del año solicitado function getLastDateOfYear($year = 0) { if ($year == 0) $year = date('Y'); $easterDays = easter_days($year); $dt = new DateTime(date('Y-m-d', strtotime($year . '-03-21'))); $dt->add(new DateInterval('P' . $easterDays . 'D')); return $dt->format('Y-m-d'); } // Devuelve arreglo con fechas de la semana santa del año solicitado function getDatesOfYear($year = 0) { if ($year == 0) $year = date('Y'); $r = NULL; $diff1Day = new DateInterval('P1D'); $diff1Day->invert = 1; $easterDays = easter_days($year); $dt = new DateTime(date('Y-m-d', strtotime($year . '-03-21'))); $dt->add(new DateInterval('P' . $easterDays . 'D')); $r = array($dt->format('Y-m-d')); for ($i = 1; $i <= 3; $i++) { $dt->add($diff1Day); $r[] = $dt->format('Y-m-d'); } return array_reverse($r); } // Devuelve arreglo con fechas de la semana santa del año solicitado agrupando por año function getDatesOfYearLikeGroup($year = 0) { $tmp = $this->getDatesOfYear($year); $starterYear = intval(substr($tmp[0], 0, 4)); $r[$starterYear] = $tmp; return $r; } // Devuelve arreglo con fechas de la semana santa del rango de años solicitado function getDatesOfYears($starterYear = 0, $endingYear = 0) { $r = $this->getDatesOfYear($starterYear); $endingYear = ($endingYear <= 0 ? $starterYear : $endingYear); for ($i = $starterYear + 1; $i <= $endingYear; $i++) $r = array_merge($r, $this->getDatesOfYear($i)); return $r; } // Devuelve arreglo con fechas de la semana santa del rango de años solicitado en grupos por año function getDateGroupsOfYears($starterYear = 0, $endingYear = 0) { if ($starterYear == 0) $starterYear = date('Y'); $r = null; for ($i = $starterYear; $i <= $endingYear; $i++) $r[$i] = $this->getDatesOfYear($i); return $r; } // Devuelve el HTML de una tabla con el listado de fechas por año del rango que se solicite function getHTMLResult($starterYear = 0, $endingYear = 0) { $r = ''; $ar = $this->getDateGroupsOfYears($starterYear, $endingYear); $theadAndYearTD_Style = ' style="background-color: black; color:white;"'; $oddRow = ''; $evenRow = ' style="background-color:#eaeaea;"'; $tID = 'tResultHolidayDates-' . md5(rand(1, 1000)); $r .= '<style>' . '#' . $tID . ' tbody tr:hover { background-color:#363636!important; color:white!important; }' . '.tr-current-year { color:#006600; background-color:#7d7!important; font-weight:bold; }' . '#' . $tID . ' .tr-current-year:hover { color:#007!important; background-color:#FC0!important; }' . '</style>'; $r .= '<table' . ' id="' . $tID . '" name="' . $tID . '"' . ' style="width:100%; font-family:Verdana; text-align: center; border-collapse: collapse;"' . ' cellpadding="10" border="1"' . '>' . '<thead' . $theadAndYearTD_Style . '>' . '<tr>' . '<th>Año</th>' . '<th>Jueves Santo</th>' . '<th>Viernes Santo</th>' . '<th>Sábado de Gloria</th>' . '<th>Domingo de Resurrección</th>' . '</tr>' . '</thead>' . '<tbody>'; $nrow = 0; $currentYear = intval(date('Y')); foreach ($ar as $year => $arDate) { $nrow++; $r .= '<tr' . ($year == $currentYear ? ' class="tr-current-year" title="Este es el año en curso actualmente"' : '') . ($nrow % 2 == 0 ? $evenRow : $oddRow) . '>'; $r .= '<td' . $theadAndYearTD_Style . '>' . $year . '</td>'; foreach ($arDate as $idx => $xdate) $r .= '<td>' . $xdate . '</td>'; $r .= '</tr>'; } $r .= '</tbody>' . '</table>'; return $r; } } // Declaración de instancia de cl_holyWeek $o = new cl_holyWeek(); // Definición de parámetros de año de inicio y año final del rango de consulta $currentYear = intval(date('Y')); $startYear = $currentYear - 2; $endYear = $currentYear + 2; $sTitleStyle = ' style="background-color:#069; color:#FFF; padding:4px;"'; $xc = ''; if (true) $xc .= '<div ' . $sTitleStyle . '>Función [getLastDateOfYear] :: Muestra fecha del Domingo de Resurrección del año en curso</div>' . '<div style="padding: 10px; background-color:#ccc;">' . $o->getLastDateOfYear() . '</div>' . '<hr/>'; if (true) $xc .= '<div ' . $sTitleStyle . '>' . 'Función [getDatesOfYear] :: Devuelve arreglo con fechas de la semana santa del año solicitado' . '</div>' . $o->showArray($o->getDatesOfYear()) . '<hr/>'; if (true) $xc .= '<div ' . $sTitleStyle . '>' . 'Función [getDatesOfYearLikeGroup] :: Devuelve arreglo con fechas de la semana santa del año solicitado agrupando por año' . '</div>' . $o->showArray($o->getDatesOfYearLikeGroup()) . '<hr/>'; if (true) $xc .= '<div ' . $sTitleStyle . '>' . 'Función [getDatesOfYears] :: Devuelve arreglo con fechas de la semana santa del rango de años solicitado' . '</div>' . $o->showArray($o->getDatesOfYears($startYear, $endYear)) . '<hr/>'; if (true) $xc .= '<div ' . $sTitleStyle . '>' . 'Función [getDateGroupsOfYears] :: Devuelve arreglo con fechas de la semana santa del rango de años solicitado en grupos por año' . '</div>' . $o->showArray($o->getDateGroupsOfYears($startYear, $endYear)) . '<hr/>'; // Definición de parámetros de año de inicio y año final del rango de consulta $startYear = 1979; $endYear = 2040; if (true) $xc .= '<div ' . $sTitleStyle . '>' . 'Función [getHTMLResult] :: Devuelve el HTML de una tabla con el listado de fechas por año del rango que se solicite' . '</div>' . '<br/>' . $o->getHTMLResult($startYear, $endYear); echo $xc; ?>
Array ( [0] => 2024-03-28 [1] => 2024-03-29 [2] => 2024-03-30 [3] => 2024-03-31 )
Array ( [2024] => Array ( [0] => 2024-03-28 [1] => 2024-03-29 [2] => 2024-03-30 [3] => 2024-03-31 ) )
Array ( [0] => 2022-04-14 [1] => 2022-04-15 [2] => 2022-04-16 [3] => 2022-04-17 [4] => 2023-04-06 [5] => 2023-04-07 [6] => 2023-04-08 [7] => 2023-04-09 [8] => 2024-03-28 [9] => 2024-03-29 [10] => 2024-03-30 [11] => 2024-03-31 [12] => 2025-04-17 [13] => 2025-04-18 [14] => 2025-04-19 [15] => 2025-04-20 [16] => 2026-04-02 [17] => 2026-04-03 [18] => 2026-04-04 [19] => 2026-04-05 )
Array ( [2022] => Array ( [0] => 2022-04-14 [1] => 2022-04-15 [2] => 2022-04-16 [3] => 2022-04-17 ) [2023] => Array ( [0] => 2023-04-06 [1] => 2023-04-07 [2] => 2023-04-08 [3] => 2023-04-09 ) [2024] => Array ( [0] => 2024-03-28 [1] => 2024-03-29 [2] => 2024-03-30 [3] => 2024-03-31 ) [2025] => Array ( [0] => 2025-04-17 [1] => 2025-04-18 [2] => 2025-04-19 [3] => 2025-04-20 ) [2026] => Array ( [0] => 2026-04-02 [1] => 2026-04-03 [2] => 2026-04-04 [3] => 2026-04-05 ) )
Año | Jueves Santo | Viernes Santo | Sábado de Gloria | Domingo de Resurrección |
---|---|---|---|---|
1979 | 1979-04-12 | 1979-04-13 | 1979-04-14 | 1979-04-15 |
1980 | 1980-04-03 | 1980-04-04 | 1980-04-05 | 1980-04-06 |
1981 | 1981-04-16 | 1981-04-17 | 1981-04-18 | 1981-04-19 |
1982 | 1982-04-08 | 1982-04-09 | 1982-04-10 | 1982-04-11 |
1983 | 1983-03-31 | 1983-04-01 | 1983-04-02 | 1983-04-03 |
1984 | 1984-04-19 | 1984-04-20 | 1984-04-21 | 1984-04-22 |
1985 | 1985-04-04 | 1985-04-05 | 1985-04-06 | 1985-04-07 |
1986 | 1986-03-27 | 1986-03-28 | 1986-03-29 | 1986-03-30 |
1987 | 1987-04-16 | 1987-04-17 | 1987-04-18 | 1987-04-19 |
1988 | 1988-03-31 | 1988-04-01 | 1988-04-02 | 1988-04-03 |
1989 | 1989-03-23 | 1989-03-24 | 1989-03-25 | 1989-03-26 |
1990 | 1990-04-12 | 1990-04-13 | 1990-04-14 | 1990-04-15 |
1991 | 1991-03-28 | 1991-03-29 | 1991-03-30 | 1991-03-31 |
1992 | 1992-04-16 | 1992-04-17 | 1992-04-18 | 1992-04-19 |
1993 | 1993-04-08 | 1993-04-09 | 1993-04-10 | 1993-04-11 |
1994 | 1994-03-31 | 1994-04-01 | 1994-04-02 | 1994-04-03 |
1995 | 1995-04-13 | 1995-04-14 | 1995-04-15 | 1995-04-16 |
1996 | 1996-04-04 | 1996-04-05 | 1996-04-06 | 1996-04-07 |
1997 | 1997-03-27 | 1997-03-28 | 1997-03-29 | 1997-03-30 |
1998 | 1998-04-09 | 1998-04-10 | 1998-04-11 | 1998-04-12 |
1999 | 1999-04-01 | 1999-04-02 | 1999-04-03 | 1999-04-04 |
2000 | 2000-04-20 | 2000-04-21 | 2000-04-22 | 2000-04-23 |
2001 | 2001-04-12 | 2001-04-13 | 2001-04-14 | 2001-04-15 |
2002 | 2002-03-28 | 2002-03-29 | 2002-03-30 | 2002-03-31 |
2003 | 2003-04-17 | 2003-04-18 | 2003-04-19 | 2003-04-20 |
2004 | 2004-04-08 | 2004-04-09 | 2004-04-10 | 2004-04-11 |
2005 | 2005-03-24 | 2005-03-25 | 2005-03-26 | 2005-03-27 |
2006 | 2006-04-13 | 2006-04-14 | 2006-04-15 | 2006-04-16 |
2007 | 2007-04-05 | 2007-04-06 | 2007-04-07 | 2007-04-08 |
2008 | 2008-03-20 | 2008-03-21 | 2008-03-22 | 2008-03-23 |
2009 | 2009-04-09 | 2009-04-10 | 2009-04-11 | 2009-04-12 |
2010 | 2010-04-01 | 2010-04-02 | 2010-04-03 | 2010-04-04 |
2011 | 2011-04-21 | 2011-04-22 | 2011-04-23 | 2011-04-24 |
2012 | 2012-04-05 | 2012-04-06 | 2012-04-07 | 2012-04-08 |
2013 | 2013-03-28 | 2013-03-29 | 2013-03-30 | 2013-03-31 |
2014 | 2014-04-17 | 2014-04-18 | 2014-04-19 | 2014-04-20 |
2015 | 2015-04-02 | 2015-04-03 | 2015-04-04 | 2015-04-05 |
2016 | 2016-03-24 | 2016-03-25 | 2016-03-26 | 2016-03-27 |
2017 | 2017-04-13 | 2017-04-14 | 2017-04-15 | 2017-04-16 |
2018 | 2018-03-29 | 2018-03-30 | 2018-03-31 | 2018-04-01 |
2019 | 2019-04-18 | 2019-04-19 | 2019-04-20 | 2019-04-21 |
2020 | 2020-04-09 | 2020-04-10 | 2020-04-11 | 2020-04-12 |
2021 | 2021-04-01 | 2021-04-02 | 2021-04-03 | 2021-04-04 |
2022 | 2022-04-14 | 2022-04-15 | 2022-04-16 | 2022-04-17 |
2023 | 2023-04-06 | 2023-04-07 | 2023-04-08 | 2023-04-09 |
2024 | 2024-03-28 | 2024-03-29 | 2024-03-30 | 2024-03-31 |
2025 | 2025-04-17 | 2025-04-18 | 2025-04-19 | 2025-04-20 |
2026 | 2026-04-02 | 2026-04-03 | 2026-04-04 | 2026-04-05 |
2027 | 2027-03-25 | 2027-03-26 | 2027-03-27 | 2027-03-28 |
2028 | 2028-04-13 | 2028-04-14 | 2028-04-15 | 2028-04-16 |
2029 | 2029-03-29 | 2029-03-30 | 2029-03-31 | 2029-04-01 |
2030 | 2030-04-18 | 2030-04-19 | 2030-04-20 | 2030-04-21 |
2031 | 2031-04-10 | 2031-04-11 | 2031-04-12 | 2031-04-13 |
2032 | 2032-03-25 | 2032-03-26 | 2032-03-27 | 2032-03-28 |
2033 | 2033-04-14 | 2033-04-15 | 2033-04-16 | 2033-04-17 |
2034 | 2034-04-06 | 2034-04-07 | 2034-04-08 | 2034-04-09 |
2035 | 2035-03-22 | 2035-03-23 | 2035-03-24 | 2035-03-25 |
2036 | 2036-04-10 | 2036-04-11 | 2036-04-12 | 2036-04-13 |
2037 | 2037-04-02 | 2037-04-03 | 2037-04-04 | 2037-04-05 |
2038 | 2038-04-22 | 2038-04-23 | 2038-04-24 | 2038-04-25 |
2039 | 2039-04-07 | 2039-04-08 | 2039-04-09 | 2039-04-10 |
2040 | 2040-03-29 | 2040-03-30 | 2040-03-31 | 2040-04-01 |
Política de PrivacidadÚltima actualización: 23 de diciembre de 2024 |
X |
Tu privacidad es importante para nosotros. En esta política de privacidad, explicamos qué información recopilamos cuando visitas nuestro sitio web y cómo utilizamos esa información.
Este sitio no recopila información personal de los usuarios, excepto cuando un usuario elige voluntariamente comunicarse a través del formulario de contacto. En ese caso, los datos proporcionados (como tu nombre y correo electrónico) se utilizarán únicamente para responder a tu consulta.
Este sitio web utiliza una única cookie esencial llamada PHPSESSID
.
PHPSESSID
se utiliza exclusivamente en la página de contacto para gestionar el funcionamiento del CAPTCHA. Esto garantiza que el formulario de contacto funcione correctamente y evita envíos automáticos o maliciosos.No usamos cookies de análisis ni de seguimiento.
Adoptamos medidas técnicas y organizativas razonables para proteger cualquier información que compartas con nosotros contra el acceso no autorizado, pérdida o alteración.
Nuestro sitio web puede contener enlaces a otros sitios web. No somos responsables de las prácticas de privacidad ni del contenido de dichos sitios.
Nos reservamos el derecho de actualizar esta política de privacidad en cualquier momento. Cualquier cambio será publicado en esta misma página e incluirá la fecha de la última actualización.
Si tienes preguntas o inquietudes sobre esta política de privacidad, puedes comunicarte con nosotros a través de la página de contacto disponible en este sitio web.
Nuestro sitio web cumple con las principales regulaciones internacionales de protección de datos personales para garantizar la privacidad y seguridad de los usuarios. Esto incluye, pero no se limita a, las siguientes leyes:
Si tienes preguntas o dudas sobre el cumplimiento de estas leyes, no dudes en ponerte en contacto conmigo a través de la página de contacto de este sitio web.