-
-
Save daniloassis/5078325 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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'); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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