W3docs

easter_days()

Scopri come usare la funzione easter_days() di PHP per calcolare i giorni dopo il 21 marzo in cui cade la Pasqua per un dato anno.

Introduzione

Benvenuto alla nostra guida sul calcolo della data di Pasqua con PHP. Mostreremo come determinare la data per qualsiasi anno e come implementarla nei tuoi progetti. Esploreremo la storia della Pasqua e i calcoli matematici necessari per stabilirne la data. Al termine di questa guida, avrai una conoscenza approfondita di come calcolare la data di Pasqua usando PHP.

Cos'è la Pasqua?

La Pasqua è una festività cristiana che celebra la resurrezione di Gesù Cristo dai morti. È una delle festività più importanti del calendario cristiano ed è celebrata in tutto il mondo. La Pasqua cade in una data diversa ogni anno, e tale data è determinata da un insieme di calcoli complessi.

Storia della Pasqua

La Pasqua è celebrata dai cristiani da oltre 2.000 anni. Le origini esatte della festività non sono del tutto chiare, ma si ritiene che derivi da celebrazioni pagane della primavera. Si crede che il nome "Pasqua" in inglese ("Easter") provenga dalla parola dell'antico inglese "ēastre", un festival pagano che celebrava l'equinozio di primavera.

Nella tradizione cristiana, la Pasqua celebra la resurrezione di Gesù Cristo dai morti. Secondo la Bibbia, Gesù fu crocifisso il Venerdì Santo e risorse dai morti tre giorni dopo, la domenica di Pasqua. La Pasqua si celebra la domenica successiva alla prima luna piena dopo l'equinozio di primavera, che di solito cade tra il 22 marzo e il 25 aprile.

Calcolo della Data di Pasqua

La data di Pasqua è determinata da un insieme di calcoli complessi basati sui cicli della luna e del sole. I calcoli furono sviluppati per la prima volta dal Concilio di Nicea nel 325 d.C. e sono stati affinati nel corso dei secoli.

La data di Pasqua viene calcolata usando la seguente formula:

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

Se f è minore o uguale a 31, la Pasqua cade il f marzo. Se f è maggiore di 31, la Pasqua cade il f - 31 aprile.

Nota: questo algoritmo classico funziona per la maggior parte degli anni, ma presenta casi limite noti (ad es. 1954, 1981, 2049, 2079, 2099) in cui il risultato potrebbe essere errato di un giorno. Per le applicazioni in produzione, considera l'uso di una libreria di calendario dedicata o l'implementazione delle regole complete di correzione gregoriana.

Usare PHP per Calcolare la Data di Pasqua

Ora che comprendiamo la storia e i calcoli alla base della data di Pasqua, vediamo come possiamo usare PHP per calcolare la data di Pasqua per qualsiasi anno. Inizieremo creando una funzione PHP che accetta un anno come argomento e restituisce la data di Pasqua per quell'anno.

La funzione segue questi passaggi:

  1. Calcola i resti a, b e c in base all'anno fornito come input.
  2. Calcola i valori intermedi d ed e usando le formule del ciclo lunare e solare.
  3. Determina f, che rappresenta lo scostamento in giorni dal 22 marzo.
  4. Converte f in mese e giorno, quindi formatta il risultato usando DateTime. (Vedi date_date_set() e date_format() per i relativi helper sulle date.)

Il Codice PHP per Calcolare la Data di Pasqua

<?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 Funzione Built-in easter_days()

Il titolo del capitolo fa riferimento alla funzione nativa easter_days() di PHP, che è il metodo standard per calcolare la Pasqua nel codice in produzione. Questa funzione restituisce il numero di giorni dopo il 21 marzo in cui cade la Pasqua per un dato anno. Gestisce automaticamente tutte le correzioni del calendario e i casi limite, eliminando la necessità di aritmetica modulo manuale.

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

Sebbene l'algoritmo personalizzato sopra riportato sia utile a scopi didattici, easter_days() è consigliata per le applicazioni reali grazie alla sua precisione, semplicità e gestione integrata degli anni bisestili e delle correzioni del calendario gregoriano.

Per trasformare l'offset in una data effettiva del calendario, combina easter_days() con una data base del 21 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 fornisce anche la funzione strettamente correlata easter_date(), che restituisce la data di Pasqua direttamente come timestamp Unix invece di uno scostamento in giorni.

Funzioni Correlate

Esercitazione

Pratica
Qual è lo scopo della funzione easter_days() in PHP?
Qual è lo scopo della funzione easter_days() in PHP?
Was this page helpful?