Skip to content

Instantly share code, notes, and snippets.

@daniloassis
Forked from netojoaobatista/Eclesiasticos.php
Last active December 14, 2015 11:19
Show Gist options
  • Save daniloassis/5078325 to your computer and use it in GitHub Desktop.
Save daniloassis/5078325 to your computer and use it in GitHub Desktop.
<?php
function delambre($year)
{
//A = o resto de (Ano ÷ 19)
//B = o inteiro de (Ano ÷ 100)
//C = o resto de (Ano ÷ 100)
//D = o inteiro de (B ÷ 4)
//E = o resto de (B ÷ 4)
//F = o inteiro de [(B + 8) ÷ 25]
//G = o inteiro de [(B - F + 1) ÷ 3]
//H = o resto de [(19xA + B - D - G + 15) ÷ 30]
//I = o inteiro de (C ÷ 4)
//K = o resto de (C ÷ 4)
//L = o resto de [(32 + 2xE + 2xI - H - K) ÷ 7]
//M = o inteiro de [(A + 11xH + 22xL) ÷ 451]
//P = o inteiro de [(H + L - 7xM + 114) ÷ 31]
//Q = o resto de [(H + L - 7xM + 114) ÷ 31]
//A Páscoa será no dia Q+1 do mês P.
$a = $year % 19;
$b = (int) ($year / 100);
$c = $year % 100;
$d = (int) ($b / 4);
$e = $b % 4;
$f = (int) (($b + 8) / 25);
$g = (int) (($b - $f + 1) / 3);
$h = (19 * $a + $b - $d - $g + 15) % 30;
$i = (int) ($c / 4);
$k = $c % 4;
$l = (32 + 2 * $e + 2 * $i - $h - $k) % 7;
$m = (int) (($a + 11 * $h + 22 * $l) / 451);
$p = (int) (($h + $l - 7 * $m + 114) / 31);
$q = ($h + $l - 7 * $m + 114) % 31;
return new \DateTime(sprintf('%04d-%02d-%02d', $year, $p, $q + 1));
}
function carnaval($year)
{
$easterDate = delambre($year);
// Carnaval começa exatos 51 (46 + 5) dias antes da Páscoa
return $easterDate->modify('-51 days');
}
No ano de 1900, a sexta-feira de Carnaval será no dia 23/02/1900
No ano de 1950, a sexta-feira de Carnaval será no dia 17/02/1950
No ano de 1970, a sexta-feira de Carnaval será no dia 06/02/1970
No ano de 1990, a sexta-feira de Carnaval será no dia 23/02/1990
No ano de 1991, a sexta-feira de Carnaval será no dia 08/02/1991
No ano de 2000, a sexta-feira de Carnaval será no dia 03/03/2000
No ano de 2012, a sexta-feira de Carnaval será no dia 17/02/2012
No ano de 2013, a sexta-feira de Carnaval será no dia 08/02/2013
No ano de 2038, a sexta-feira de Carnaval será no dia 05/03/2038
No ano de 3000, a sexta-feira de Carnaval será no dia 21/02/3000
<?php
require 'delambre.php';
$years = array(
1900,
1950,
1970,
1990,
1991,
2000,
2012,
2013,
2038,
3000,
);
foreach ($years as $year) {
$carnavalDate = carnaval($year);
printf("No ano de %d, a sexta-feira de Carnaval será no dia %s" . PHP_EOL,
$year, $carnavalDate->format('d/m/Y'));
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment