domingo, 8 de febrero de 2009

Manual de PHP 41. Funciones: Funciones de calendario

Los distintos calendarios

Días julianos

El sistema de días julianos fue creado por Joseph Justus Scaliger en 1582 y fue llamado así en recuerdo de su padre, Julius Cesar Scaliger.

Se trata de un sistema de cuenta de días que tiene su origen en el 1 de Enero del año 4713 a.C. y que acabará el 31 de Diciembre de 3267.

Este ciclo es producto de multiplicar tres ciclos menores: uno de 28 años denominado solar, otro de 19 años, que incorpora las fases lunares y uno de 15 años denominado de indicción.

El día juliano es el número resultante de contar los días transcurridos desde la fecha definida por Scaliger como comienzo del ciclo.

Calendario juliano

El emperador romano Julio Cesar ordenó en el año 44 a.C. la reforma del calendario. Sustituyó el lunar adoptando, con modificaciones, uno solar de origen egipcio que data del 4000 a.C.

Con la asesoría de Sosígenes de Alejandría fijó la duración de cada año en 365,25 días, insertando un día suplemen- tario –en febrero– cada cuatro años, -bis sextus dies ante calendas Martii- (dos sextos días antes de las calendas de marzo), haciendo bisiestos a todos los años cuyo número de orden sea divisible por cuatro.

Calendario gregoriano

A lo largo la Edad Media se siguió manteniendo en gran parte de Europa el calendario juliano con la única adaptación de fijar la fecha de referencia de la cuenta de años en el nacimiento de Cristo.

Pero dado que la duración real del ciclo de translación de la tierra alrededor del sol es de 365,2422 días solares medios, el calendario juliano –con años de 365,25 días– empezaba a acumular un error importante.

El Papa Gregorio XIII realizó la corrección en el año 1582. Se descontaron diez días y es por eso que en 1582, al cuatro de octubre le siguió el día quince (viernes).

Para evitar sucesivos desfases se modificaron las condiciones de los años bisiestos que, en lo sucesivo, habrían de cumplir la condición de que su ordinal sea divisible por 4 y que no acabe en 00 con la excepción de los múltiplos de 400 que tendrían condición bisiestos.

Calendario judío

La era judía comienza a contar desde un supuesto año de la creación del mundo, que se calcula sumando las edades de las distintas generaciones men- cionadas en la Biblia.

El año judío se corresponde con el cristiano sumándole a éste 3.760 años.

El año judío es solar como el cristiano, pero sus meses son lunares, por lo que cada dos o tres años tiene que añadirse un mes bisiesto para adecuar al año solar el cómputo de los meses lunares.

Calendario republicano francés

El Calendario Republicano fue adoptado por la Convención Francesa partiendo de las propuestas técnicas formuladas por el matemático Lagrange.

Es un intento de adaptar el calendario al sistema decimal y eliminar referencias religiosas.

El comienzo del año coincidía con el día 22 de Septiembre, equinoccio de otoño, y se fijó su día uno del año uno el 22 de Septiembre de 1792, día de la proclamación de la República.

Consta 12 meses de 30 días, a los que se añaden cinco días complementarios (seis en los años que son divisibles por 4 y no por 100) que son festivos y no se asignan a ningún mes.

Los meses se dividen en tres décadas de 10 días.

El calendario fue de aplicación civil en Francia y sus colonias americanas y africanas hasta 1806.

Día de Pascua

El Día de Pascua fue fijado en el Concilio de Nicea (año 325) como el domingo siguiente a la primera luna llena posterior al equinoccio de Primavera.

Este equinoccio se supone que siempre coincide con el 21 de marzo.

El algoritmo que usa PHP para su cálculo se basa en el que desarrolló Dionisio Exiguo en el año 532.

Para los años anteriores a 1753, (calendario Juliano) usa un ciclo simple de 19 años para calcular las fases de la luna.

En los años posteriores a esa fecha (Calendario Gregoriano) se añaden dos factores de corrección que tratan de hacer ese ciclo más preciso.



gregoriantojd(mes,día,año)

Realiza la cuenta de días julianos correspondiente a la fecha gregoriana pasada en los parámetros mes, día y año. El script nos devolverá: que es el día juliano correspondiente a la fecha gregoriana: 27 de setiembre de 1999.

Este otro script nos devolverá el día juliano correspondiente a la fecha actual.

Así que, para tu conocimiento y efectos pertinentes, hoy día estamos celebrando el día juliano número .

jdtogregorian(nº de días julianos)

Esta función devuelve en fecha gregoriana –con formato: mes, día y año– el día juliano pasado como parámetro.
Por si quieres ir preparando las celebraciones del 2.500.000 día juliano debes saber que coincidirá con la fecha

jdtojulian(nº de días julianos)

Con esta función puedes obtener la fecha juliana a partir de un valor de la Cuenta de Días Juliana .

Este script de PHP

<? echo jdtojulian(gregoriantojd (date("n"), date("j"), date("Y"))) ?>





nos devuelve la fecha actual según el calendario juliano.

Para que sepas en que día vives, hoy es según el calendario juliano.

juliantojd(mes,día,año)

Convierte a Cuenta de días Julianos la fecha pasada (mes, día y año) del calendario juliano.

Por ejemplo
<? echo juliantojd(7,25,2001) ?>

nos devolverá que corresponde a la cuenta de días correspondiente a la fecha 25/7/2001 expresada según el calendario juliano.

jdtojewish(nº de días julianos)

Esta función nos devuelve la fecha (mes, día y año) según el calendario judío a partir de una fecha expresada en días julianos.


<? echo jdtojewish (gregoriantojd (date("n"), date("j"), date("Y"))) ?>




nos dará la fecha actual según el calendario judío que es: .

jewishtojd(mes,día,año)

Nos devuelve el día juliano correspondiente a una determinada fecha del calendario judío.

Por ejemplo:


<? echo jdtogregorian(jewishtojd(7,21,5758)) ?>





nos devolverá que es la fecha gregoriana correspondiente al día 21 del séptimo mes del año 5758 según el calendario judío.

jdtofrench(nº de días julianos)

Esta función nos devuelve la fecha según el calendario republicano francés correspondiente al día juliano especificado como parámetro.


<? echo jdtofrench (gregoriantojd (5, 7, 1796)) ?>




nos dará la fecha del calendario republicano francés que se corresponde con el 7 de Mayo de 1796 (gregoriano) que según parece es: .

Sólo convierte fechas comprendidas entre los años 1 y 14 (fechas Gregorianas del 22 de septiembre de 1792 al 22 de septiembre de 1806) que se corresponden con el período de vigencia oficial de este calendario.

frenchtojd(mes,día,año)

Convierte una fecha del calendario republicano francés en su equivalente en días julianos.

Por ejemplo:


<? echo jdtogregorian(frenchtojd(6,7,8)) ?>





nos devolverá , que es la fecha gregoriana correspondiente al día 7 del sexto mes del año 8 según el calendario republicano francés.

Igual que la función anterior sólo convierte fechas comprendidas entres los años 1 y 14 del calendario francés.

jdmonthname(día juliano, calendario)

Devuelve del nombre del mes correspondiente al día juliano en el calendario señalado.


Ejemplos de jdmonthname()
Fecha
gregoriana
Gregoriano
abreviado
Gregoriano Juliano
abreviado
Juliano Judío Republicano
francés
3/1/1803 Jan January Dec December Tevet Nivose
3/2/1803 Feb February Jan January Shevat Pluviose
3/3/1803 Mar March Feb February AdarI Ventose
3/4/1803 Apr April Mar March Nisan Germinal
3/5/1803 May May Apr April Iyyar Floreal
3/6/1803 Jun June May May Sivan Prairial
3/7/1803 Jul July Jun June Tammuz Messidor
3/8/1803 Aug August Jul July Av Thermidor
3/9/1803 Sep September Aug August Elul Fructidor
3/10/1803 Oct October Sep September Tishri Vendemiaire
3/11/1803 Nov November Oct October Heshvan Brumaire
3/12/1803 Dec December Nov November Kislev Frimaire
Parámetro
calendario
0 1 2 3 4 5

Los parámetros señalados en la fila inferior son los correspondientes a los tipos de nombres de mes señalados en los encabezados de la tabla.

easter_date(año)

Devuelve -en tiempo Unix- la media noche del día de Pascua del año establecido como parámetro.

Esta función sólo es válida cuando los valores del año están comprendidos entre 1970 y 2037 (tiempo UNIX).

El script echo date( "j-n-Y", easter_date(2006)) nos señala que la Pascua del año 2006 ha sido el día .

easter_days(año)

Devuelve el número de días del período comprendido entre el 21 de marzo y el día de Pascua. Si no se especifica el año, se asume el actual.

No tiene las limitaciones de la función anterior y es aplicable a años fuera del intervalo de tiempo UNIX.

El script easter_days(2006) nos señala que la Pascua del año 2006 ha sido días después del 21 de Marzo.

Si piensas en la posibilidad de utilizar estas funciones en alguna aplicación concreta que pretendas publicar en un hosting de la red cerciórate antes de que estén habilitadas.






No hay comentarios: