note 119314 deleted from dateinterval.createfromdatestring by cmb
| From: | cmb@php.net | Date: | Thu, 12 May 2016 17:28:52 +0000 |
| Subject: | note 119314 deleted from dateinterval.createfromdatestring by cmb | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-205471@lists.php.net to get a copy of this message | ||
Note Submitter: racl at gulix dot cl
----
/**
* regresa feriado de semana santa se calcula segun calendario lunar, primer fin de semana tras
luna llena
* despues del equinoccio de otoño
* @param integer anio año a revisar
* @return array arreglo de la forma fecha[]='dd,mm'
*/
function viernesSanto($anio)
{
date_default_timezone_set('America/Santiago');
$mesLunar = 29.53; //dias
$lunaLlena = new \DateTime('2016-01-24'); // primer luna llena 2016
$equinoccio = new \DateTime($anio.'-03-21'); // 3 de marzo
$intervalo = $equinoccio->diff($lunaLlena);
$dias = $intervalo->days;
$proximaLunaLLenaTrasEquinoccioEnDias=ceil(floor($dias/$mesLunar)*$mesLunar+$mesLunar);
$intervaloProximaLunaLLena = new
\DateInterval('P'.$proximaLunaLLenaTrasEquinoccioEnDias.'D');
$proximaLunaLlena = $lunaLlena->add($intervaloProximaLunaLLena);
list($dd,$mm) = explode('-',$proximaLunaLlena->format('d-m'));
$diaSemana = date('w',mktime(0,0,0,$mm,$dd,$anio));
$domingo = strtotime(date('Y-m-d',strtotime('-'.$diaSemana.'
day',strtotime(date($anio.'-'.$mm.'-'.$dd)))));
list($dd,$mm) = explode('-',date('d-m',strtotime('+5
day',$domingo)));
return array('dia'=>$dd,'mes'=>$mm);
}