W3docs

easter_days()

Aprende a usar la función easter_days() de PHP para calcular los días después del 21 de marzo en que cae Pascua para cualquier año.

Introducción

Bienvenido a nuestra guía sobre el cálculo de la fecha de Pascua usando PHP. Te mostraremos cómo determinar la fecha para cualquier año dado e implementarla en tus proyectos. Exploraremos la historia de la Pascua y los cálculos matemáticos involucrados en la determinación de la fecha. Al final de esta guía, tendrás un conocimiento profundo de cómo calcular la fecha de Pascua usando PHP.

¿Qué es la Pascua?

La Pascua es una festividad cristiana que celebra la resurrección de Jesucristo de entre los muertos. Es una de las festividades más importantes del calendario cristiano y se celebra en todo el mundo. La Pascua cae en una fecha diferente cada año, y la fecha de Pascua se determina mediante un conjunto de cálculos complejos.

Historia de la Pascua

La Pascua ha sido celebrada por los cristianos durante más de 2.000 años. Los orígenes exactos de la festividad son inciertos, pero se cree que proviene de celebraciones paganas de la primavera. Se cree que el nombre "Easter" proviene de la palabra anglosajona "ēastre", que era un festival pagano que celebraba el equinoccio de primavera.

En la tradición cristiana, la Pascua celebra la resurrección de Jesucristo de entre los muertos. Según la Biblia, Jesús fue crucificado el Viernes Santo y resucitó tres días después, el Domingo de Pascua. La Pascua se celebra el domingo siguiente a la primera luna llena después del equinoccio vernal, que generalmente cae entre el 22 de marzo y el 25 de abril.

Cálculo de la Fecha de Pascua

La fecha de Pascua se determina mediante un conjunto de cálculos complejos basados en los ciclos de la luna y el sol. Los cálculos fueron desarrollados por primera vez por el Concilio de Nicea en el año 325 d.C. y han sido perfeccionados a lo largo de los siglos.

La fecha de Pascua se calcula usando la siguiente fórmula:

a = year mod 19
b = year mod 4
c = year mod 7
d = (19 * a + 24) mod 30
e = (2 * b + 4 * c + 6 * d + 5) mod 7
f = d + e + 22

Si f es menor o igual a 31, entonces la Pascua cae el f de marzo. Si f es mayor que 31, entonces la Pascua cae el f - 31 de abril.

Nota: Este algoritmo clásico funciona para la mayoría de los años, pero tiene casos extremos conocidos (p. ej., 1954, 1981, 2049, 2079, 2099) donde el resultado puede diferir en un día. Para aplicaciones en producción, considera usar una librería de calendario dedicada o implementar las reglas de corrección gregoriana completas.

Uso de PHP para Calcular la Fecha de Pascua

Ahora que entendemos la historia y los cálculos detrás de la fecha de Pascua, veamos cómo podemos usar PHP para calcular la fecha de Pascua para cualquier año dado. Comenzaremos creando una función PHP que toma un año como argumento y devuelve la fecha de Pascua para ese año.

La función sigue estos pasos:

  1. Calcular los residuos a, b y c basándose en el año de entrada.
  2. Calcular los valores intermedios d y e usando las fórmulas de ciclos lunar y solar.
  3. Determinar f, que representa el desplazamiento de días a partir del 22 de marzo.
  4. Convertir f en un mes y día, luego formatear el resultado usando DateTime. (Consulta date_date_set() y date_format() para los ayudantes de fecha subyacentes.)

El Código PHP para Calcular la Fecha de Pascua

<?php

function get_easter_date($year) {
  $a = $year % 19;
  $b = $year % 4;
  $c = $year % 7;
  $d = (19 * $a + 24) % 30;
  $e = (2 * $b + 4 * $c + 6 * $d + 5) % 7;
  $f = $d + $e + 22;
  if ($f <= 31) {
    $month = 3;
    $day = $f;
  } else {
    $month = 4;
    $day = $f - 31;
  }
  // Use DateTime for modern object-oriented PHP (mktime is legacy, not strictly deprecated)
  $date = new DateTime();
  $date->setDate($year, $month, $day);
  return $date->format('Y-m-d');
}

echo get_easter_date(2024); // Outputs: 2024-03-31

La Función Integrada easter_days()

El título del capítulo hace referencia a la función nativa easter_days() de PHP, que es la forma estándar de calcular la Pascua en código de producción. Esta función devuelve el número de días después del 21 de marzo en que cae la Pascua para un año dado. Maneja automáticamente todas las correcciones del calendario y casos extremos, eliminando la necesidad de aritmética modular manual.

echo easter_days(2024); // Returns 10 (March 21 + 10 days = March 31)

Aunque el algoritmo personalizado anterior es útil con fines educativos, se recomienda easter_days() para aplicaciones del mundo real debido a su precisión, simplicidad y manejo integrado de años bisiestos y ajustes del calendario gregoriano.

Para convertir el desplazamiento en una fecha de calendario real, combina easter_days() con una fecha base del 21 de marzo:

$year = 2024;
$easter = new DateTime("$year-03-21");
$easter->modify('+' . easter_days($year) . ' days');
echo $easter->format('Y-m-d'); // Outputs: 2024-03-31

PHP también proporciona la función relacionada easter_date(), que devuelve la fecha de Pascua directamente como una marca de tiempo Unix en lugar de un desplazamiento de días.

Funciones Relacionadas

Práctica

Práctica
¿Cuál es el propósito de la función easter_days() en PHP?
¿Cuál es el propósito de la función easter_days() en PHP?
Was this page helpful?