Calcolare la Pasqua automaticamente

Shyson

Utente Attivo
19 Ago 2012
1.171
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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)
 

Shyson

Utente Attivo
19 Ago 2012
1.171
1
38
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;
}
 }
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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:

Shyson

Utente Attivo
19 Ago 2012
1.171
1
38
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
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
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>
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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"));
?>
 

Shyson

Utente Attivo
19 Ago 2012
1.171
1
38
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
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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"
 

Shyson

Utente Attivo
19 Ago 2012
1.171
1
38
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
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
 

Shyson

Utente Attivo
19 Ago 2012
1.171
1
38
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
Autore Titolo Forum Risposte Data
P Calcolare maschera di sottorete Hosting 0
S Magento 2 - Calcolare una tassa con una regola basata su proprietà di prodotto Magento 0
M [PHP] Calcolare costi su modifica orari PHP 4
diego66 [Javascript] Calcolare giorni lavorativi comprese tra due date Javascript 0
H [PHP] Ciclo per calcolare i chilometri PHP 4
A sito responsive - calcolare l'altezza document di 2 php Ajax 4
M [PHP] Calcolare se due intervalli di tempo si sovrappongono PHP 7
M Come calcolare infinite cifre di pigreco PHP 0
V Calcolare la differenza tra due date in PHP PHP 1
M Calcolare differenza temporale tra datetime salvati sui records di una tabella mysql PHP 18
D Ajax per calcolare tempo di permanenza Ajax 14
C Calcolare e formattare con javascript [Form!] Javascript 6
Web Designer Come calcolare l'I.M.U. online gratuitamente Discussioni Varie 0
voldemort Hosting: come calcolare traffico mensile Hosting 0
G Calcolare la somma Javascript 3
N Calcolare dimensione di un file su un server diverso PHP 4
G Calcolare il valore massimo PHP 15
A calcolare prezzo medio Java 1
A calcolare l'età in automatico Javascript 2
JellyBelly Gmap - calcolare distanza fra due maker Javascript 0
G Calcolare ROI banner di AdSense del sito? Google AdSense 2
metalgemini Calcolare i minuti tra 2 celle di formato "ora" Windows e Software 2
B Calcolare Top e Left in base a Risoluzione Classic ASP 11
L Access calcolare ore e minuti MS Access 3
N Calcolare automaticamente un campo in una maschera Database 2
S Buonasera e buona Pasqua a tutti! Presentati al Forum 0
S Buongiorno e Buona Pasqua a tutti Presentati al Forum 1
Max 1 Buona Pasqua Discussioni Varie 0
borgo italia buona pasqua Discussioni Varie 1
borgo italia buona pasqua Discussioni Varie 2
borgo italia pasqua Discussioni Varie 2
P inserisci Offerte di Pasqua Presenta il tuo Sito 0
PoLe Buona Pasqua a tutti! Discussioni Varie 2
lukeonweb Buona Pasqua... Discussioni Varie 8
Filippine Buona Pasqua !! Discussioni Varie 6
C Auguri Di Buona Pasqua Discussioni Varie 2
grottafelix Buona Pasqua Amici Discussioni Varie 3
F Aggiungere automaticamente sito a home del telefono HTML e CSS 2
G inserire dati automaticamente in mysql PHP 0
M [PHP] Compilare automaticamente il campo data PHP 5
Gentacti [PHP] Numerare automaticamente PHP 2
L [PHP] Form da select compilare campi automaticamente PHP 1
L [MS Access] come popolare automaticamente i campi di una sottomaschera MS Access 8
trattorino [PHP] blocchi div che si posizionano in alto automaticamente PHP 5
asevenx [PHP] Eliminare record automaticamente dopo una certa data PHP 12
Lucia Fiore refresh di un div automaticamente Javascript 2
M diminuire automaticamente grandezza input tabella Javascript 5
asevenx Pubblicare automaticamente un articolo da linkedin su blog wordpress WordPress 1
M Numerare automaticamente campo numerico con più parametri PHP 4
M Numerare automaticamente campo numerico PHP 32

Discussioni simili