Calcolare la Pasqua automaticamente

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio

Shyson

Utente Attivo
19 Ago 2012
1.179
1
38
Siccome siamo sotto Pasqua e visto che ogni anno cade in giorni diversi, ho pensato di mettere nel mio sito uno script che mette a video automaticamente la scritta "Oggi è Pasqua" in base all'impostazione data-ora del browser, ma non ne ho trovati
 
ciao
in js non saprei, in php ho fatto qualcosa di simile usando l'algoritmo di gaus. anche se il problema è contrario del tuo (cioè dato l'anno ricava la data di pasqua però penso che sia rivesciabile.
se ti interessa lo posto (in php però, eventualmente tradurlo in js è a carico tuo, poi eventualmete lo posti)
 
ciao
in js non saprei, in php ho fatto qualcosa di simile usando l'algoritmo di gaus. anche se il problema è contrario del tuo (cioè dato l'anno ricava la data di pasqua però penso che sia rivesciabile.
se ti interessa lo posto (in php però, eventualmente tradurlo in js è a carico tuo, poi eventualmete lo posti)
Secondo me è meglio in js perché in php non è sicuro che venga visualizzato il giorno stesso di Pasqua in tutti i browser, questo dipende da dove è situato il server ospitante.

Ho trovato questo però bisogna inserire le date manualmente

PHP:
// Pasqua dal 2013 al 2025 			
function pasqua() {  
var calendario = new Date();
var giorno = calendario.getDate();
var mese = (calendario.getMonth()+1);
var anno = calendario.getFullYear(); 
var nodate = 1;  
// Gennaio=1	
if ((((((((((((((giorno ==31) && (mese ==3) && (anno ==2013) || (giorno ==20) && (mese ==4) && (anno ==2014) || (giorno ==5) && (mese ==4) && (anno ==2015) || (giorno ==27) && (mese ==3) && (anno ==2016) || (giorno ==16) && (mese ==4) && (anno ==2017) || (giorno ==1) && (mese ==4) && (anno ==2018) 
|| (giorno ==21) && (mese ==4) && (anno ==2019) || (giorno ==12) && (mese ==4) && (anno ==2020) || (giorno ==4) && (mese ==4) && (anno ==2021) || (giorno ==17) && (mese ==4) && (anno ==2022) || (giorno ==9) && (mese ==4) && (anno ==2023) || (giorno ==31) && (mese ==3) && (anno ==2024)
|| (giorno ==20) && (mese ==4) && (anno ==2025)))))))))))))) {   
document.write('<img src="img/pasqua.jpg" width="100%" height="100%" alt="Pasqua" title="Pasqua"><br /><br /><span style=" font-family:times; font-size:21px; color:#ff0000; text-shadow: 0px 1px 1px #cccccc;">Happy Easter!</span><br /><br />'); var nodate = 0;
}
 }
 
ciao
Secondo me è meglio in js perché in php non è sicuro che venga visualizzato il giorno stesso di Pasqua in tutti i browser, questo dipende da dove è situato il server ospitante.
cosa c'entra?
io imposto da un form l'anno (es 1887) e col algorito mi ricava la data (10 aprile).
poi anche js è influenzato (non dal servere) ma dal calendario del pc
edit
dimenticavo
se l'anno è prima del 1582 calcola in base al calendario giuliano, se dopo col gregoriano
edit all'edit
arriva sino al 2499
 
Ultima modifica:
ciao

cosa c'entra?
io imposto da un form l'anno (es 1887) e col algorito mi ricava la data (10 aprile).
poi anche js è influenzato (non dal servere) ma dal calendario del pc
edit
dimenticavo
se l'anno è prima del 1582 calcola in base al calendario giuliano, se dopo col gregoriano
edit all'edit
arriva sino al 2499

Chiaramente mi riferisco a browser che hanno una fascia di differenza di qualche ora, non certo a quelli situati dall'altra parte del pianeta
 
Sfruttando questo link che hai postato la soluzione diventa semplice
HTML:
<script>
    function Pasqua(datum) {
        var a,b,c,d,e,f,g,h,i,k,l,m,n,p;

        a=datum.j%19;
        b=Math.floor(datum.j/100);
        c=datum.j%100;
        d=Math.floor(b/4);
        e=b%4;
        f=Math.floor((b+8)/25);
        g=Math.floor((b-f+1)/3);
        h=(19*a+b-d-g+15)%30;
        i=Math.floor(c/4);
        k=c%4;
        l=(32+2*e+2*i-h-k)%7;
        m=Math.floor((a+11*h+22*l)/451);
        n=Math.floor((h+l-7*m+114)/31);
        p=(h+l-7*m+114)%31;

        datum.m=n;
        datum.t=p+1;
    }

    function datum(t,m,j) {
        this.t=t;
        this.m=m;
        this.j=j;
    }

    function Festivo(anno) {
        var Datum = new datum;

        Datum.j = anno;
        Pasqua(Datum);
        return Datum.t + "/" + Datum.m + "/" + Datum.j;
    }
    
    window.onload = function() {
        
        var oggi = new Date();        
        var anno = oggi.getFullYear();
        var mese = oggi.getMonth();
        var giorno = oggi.getDate();
        
        var data_pasqua = Festivo(anno);
        var data_oggi = giorno + "/" + (mese+1) + "/" + anno;
        
        if(data_oggi == data_pasqua) {
            alert("Oggi e' pasqua");
        }else{
            alert("Oggi e' il " + data_oggi);
        }

    }
</script>
 
ciao
si se hai php.
questo da la data dell'anno corrente (se vuoi poi posto quello col form per impostare l'anno)
PHP:
<?php
function data_pasqua($anno){
	$testo="secondo il calendario gregoriano<br>(dopo il 1582)<br /><br />nell'anno $anno ";
	if($anno<= 1582){
		$testo="secondo il calendario giuliano<br>(prima del 1583)<br /><br />nell'anno $anno ";
		$x=15;
		$y=6;
	}elseif($anno >= 1583 && $anno <= 1699){//da quest'anno inizia il calendario gregoriano
		$x=22;
		$y=2;
	}elseif($anno >= 1700 && $anno <= 1799){
		$x=23;
		$y=3;
	}elseif($anno >= 1800 && $anno <= 1899){
		$x=23;
		$y=4;
	}elseif($anno >= 1900 && $anno <= 2099){
		$x=24;
		$y=5;
	}elseif($anno >= 2100 && $anno <= 2199){
		$x=24;
		$y=6;
	}elseif($anno >= 2200 && $anno <= 2299){
		$x=25;
		$y=7;
	}elseif($anno >= 2300 && $anno <= 2399){
		$x=26;
		$y=8;
	}elseif($anno >= 2400 && $anno <= 2499){
		$x=25;
		$y=8;
	}
	$a=$anno%19;
	$b=$anno%4;
	$c=$anno%7;
	$d=(19*$a+$x)%30;
	$e=(2*$b+4*$c+6*$d+$y)%7;//epatta
	$somma=22+$d+$e;
	//$articolo="il";
	$a=$anno%19;
	$b=$anno%4;
	$c=$anno%7;
	$d=(19*$a+$x)%30;
	$e=(2*$b+4*$c+6*$d+$y)%7;//epatta
	$somma=22+$d+$e;
	$articolo="il";
	if($somma <= 31){
	if($somma== 1 || $somma==8 ||$somma==11){$articolo="l'";} 
	$data_P=$somma." marzo";
	}else{
		$sottr=22+$d+$e-31;
		if($sottr != 25 && $sottr != 26){
			$data_P=$sottr." aprile";
		}elseif($sottr == 26){
			$data_P="19 aprile";
		}elseif($sottr == 25 && $d==28 && $a <= 10){
			$data_P="18 aprile";
		}elseif($sottr == 25 && $d!=28 || $a > 10){
			$data_P="25 aprile";
		}
	}
	$testo .= "Pasqua cade il $data_P<br />";
	return $testo;
}
//test........
echo data_pasqua(date("Y"));
?>
 
ciao
si se hai php.
questo da la data dell'anno corrente (se vuoi poi posto quello col form per impostare l'anno)
PHP:
<?php
function data_pasqua($anno){
	$testo="secondo il calendario gregoriano<br>(dopo il 1582)<br /><br />nell'anno $anno ";
	if($anno<= 1582){
		$testo="secondo il calendario giuliano<br>(prima del 1583)<br /><br />nell'anno $anno ";
		$x=15;
		$y=6;
	}elseif($anno >= 1583 && $anno <= 1699){//da quest'anno inizia il calendario gregoriano
		$x=22;
		$y=2;
	}elseif($anno >= 1700 && $anno <= 1799){
		$x=23;
		$y=3;
	}elseif($anno >= 1800 && $anno <= 1899){
		$x=23;
		$y=4;
	}elseif($anno >= 1900 && $anno <= 2099){
		$x=24;
		$y=5;
	}elseif($anno >= 2100 && $anno <= 2199){
		$x=24;
		$y=6;
	}elseif($anno >= 2200 && $anno <= 2299){
		$x=25;
		$y=7;
	}elseif($anno >= 2300 && $anno <= 2399){
		$x=26;
		$y=8;
	}elseif($anno >= 2400 && $anno <= 2499){
		$x=25;
		$y=8;
	}
	$a=$anno%19;
	$b=$anno%4;
	$c=$anno%7;
	$d=(19*$a+$x)%30;
	$e=(2*$b+4*$c+6*$d+$y)%7;//epatta
	$somma=22+$d+$e;
	//$articolo="il";
	$a=$anno%19;
	$b=$anno%4;
	$c=$anno%7;
	$d=(19*$a+$x)%30;
	$e=(2*$b+4*$c+6*$d+$y)%7;//epatta
	$somma=22+$d+$e;
	$articolo="il";
	if($somma <= 31){
	if($somma== 1 || $somma==8 ||$somma==11){$articolo="l'";} 
	$data_P=$somma." marzo";
	}else{
		$sottr=22+$d+$e-31;
		if($sottr != 25 && $sottr != 26){
			$data_P=$sottr." aprile";
		}elseif($sottr == 26){
			$data_P="19 aprile";
		}elseif($sottr == 25 && $d==28 && $a <= 10){
			$data_P="18 aprile";
		}elseif($sottr == 25 && $d!=28 || $a > 10){
			$data_P="25 aprile";
		}
	}
	$testo .= "Pasqua cade il $data_P<br />";
	return $testo;
}
//test........
echo data_pasqua(date("Y"));
?>

A me basta il codice che metto in un file php e che poi richiamo (il codice) nella home e poi lui ogni anno si presenta al giorno giusto
 
ciao
se il tuo sito resiste sino al 2499 va bene oltre ancora non so, quando ci arrivo ti saprò dire.
piccolo accorgimento all'interno della funzione leggi con date anche il gg e il mese attuale in modo da correggere la frase in "cadrà il...." o "è caduta il..." e "oggi... è pasqua"
 
ciao
se il tuo sito resiste sino al 2499 va bene oltre ancora non so, quando ci arrivo ti saprò dire.
piccolo accorgimento all'interno della funzione leggi con date anche il gg e il mese attuale in modo da correggere la frase in "cadrà il...." o "è caduta il..." e "oggi... è pasqua"
L'ho provato ma non l'ho capito bene, in base al mio post #3 dovrebbe presentarsi un immagine a Pasqua.

Per capire meglio imposta 31-3-2013 nel browser http://www.gruppoalveo.altervista.org/
 
Ultima modifica:
ciao
per mostrare la fata neò formayo che dici basta modificare
PHP:
<?php
//....
		$data_P=$sottr."-4-".$anno;
//....
?>
e in modo analogo gli altri e se vuio avere solo la data senza il testo basta
PHP:
<?php
//....
		return $data_P;
//....
?>
e, se vuoi, passarla a una variabile invece che all'echo, variabile con cui puoi fare i confronti e far apparire l'immagine
 
ciao
per mostrare la fata neò formayo che dici basta modificare
PHP:
<?php
//....
		$data_P=$sottr."-4-".$anno;
//....
?>
e in modo analogo gli altri e se vuio avere solo la data senza il testo basta
PHP:
<?php
//....
		return $data_P;
//....
?>
e, se vuoi, passarla a una variabile invece che all'echo, variabile con cui puoi fare i confronti e far apparire l'immagine
Non ho capito, nel post #16 è spiegato come dovrebbe essere
 

Discussioni simili