El día de la semana
Zeller & #39 s de la Congruencia es un algoritmo que calcula un día de la semana determinado
un año, mes y día.
Colaborador: EARL DUNOVANT
{
EARL DUNOVANT
> Que la fecha es lo que los días De un mes determinado.
Zeller & #39 s de la Congruencia es un algoritmo que calcula un día de la semana determinado
un año, mes y día. Creado en 1887(!). Jeff Duntemann de PC Técnicas
la fama implementado en el TP en el 11/90 problema de Dr. Dobbs Journal, Con una
(115 min izquierda), (H)elp, Más? gran parche porque TP & #39 s MOD operador devuelve un resto en lugar de un
la Verdadera matemática módulo. He añadido el Parche de Alerta banner que yo uso en mi
propio código.
}
la Función de CalcDayOfWeek(Año, Mes, Día : Integer) : Integer
Var
Siglo,
Titular : Integer
begin
{ Primera prueba De las condiciones de error en los valores de entrada: }
if (Year < 0) o (Mes < 1) o (Mes > 12) o (Día < 1) o (Dia > 31) a continuación,
CalcDayOfWeek := -1 { Return -1 para indicar un error }
else
{ Hacer la Zeller & #39 s Congruencia de cálculo como Zeller mismo }
{ descrito en 'Acta Mathematica' #7, Stockhold, 1887. }
begin
{ Primero separamos el año y el siglo figuras: }
Siglo := Año div 100
Año := Año MOD 100
{ Siguiente nos ajustar el mes de Marzo sigue siendo el mes #3, }
{ pero que enero y febrero son meses #13 #14, }
{ *pero del año anterior*: }
si Mes < 3, a continuación,
begin
Inc(Mes 12)
si Año > 0, entonces
Dec(Año 1) { El año antes de 2000 }
else { 1999, no 20-1... }
begin
Año := 99
Dec(Siglo)
fin
fin
{ Aquí & #39 s Zeller & #39 s seminal de la magia negra: }
Titular := Día { a Empezar Con el día de mes }
Titular := Titular (((Mes 1) * 26) div 10) { Calc el incremento }
Titular := Titular de Año { Agregar en el año }
Titular := Titular (Año div 4) { Correcta Para los años bisiestos }
Titular := Titular (Siglo div 4) { Correcta Para los años del siglo }
Titular := Titular - del Siglo { NO & #39 T SABER por QUÉ lo HIZO! }
{***********************PARCHE de ALERTA!***************************}
Mientras que la Titular de la < 0 { Obtener valores negativos en }
Inc(Titular, 7) { territorio positivo antes de }
{ tomando el MOD... }
Titular := Titular MOD 7 { Dividir por 7, pero mantener el }
{ resto en lugar de los }
{ cociente }
{***********************PARCHE DE ALERTA!***************************}
{ Aquí se 'envuelve' el sábado en torno a ser el último día: }
si Aux = 0, entonces
Titular := 7
{ Zeller mantuvo el domingo = 1 origen de equipo chiquitito prefieren }
{ empezar todo de 0, así que aquí & #39 s del siglo 20 parche: }
Dec(Titular)
CalcDayOfWeek := Titular { Return el producto final! }
fin
fin
El dia de la semana
El dia de la semana : Multi-millones de consejos para hacer su vida mas facil.
Zeller & #39 s de la Congruencia es un algoritmo que calcula un dia de la semana determinado
un año, mes y dia.
Colaborador: EARL DUNOVANT
{
EARL DUNOVANT
> Que la fecha es lo que los dias De un mes determinado.
Zeller & #39 s de la Congruencia es un algoritmo que calcula un dia de la semana determinado
un año, mes y dia. Creado en 1887(!). Jeff Duntemann de PC Tecnicas
la fama implementado en el TP en el 11/90 problema de Dr. Dobbs Journal, Con una
(115 min izquierda), (H)elp, Mas? gran parche porque TP & #39 s MOD operador devuelve un resto en lugar de un
la Verdadera matematica modulo. He añadido el Parche de Alerta banner que yo uso en mi
propio codigo.
}
la Funcion de CalcDayOfWeek(Año, Mes, Dia : Integer) : Integer
Var
Siglo,
Titular : Integer
begin
{ Primera prueba De las condiciones de error en los valores de entrada: }
if (Year < 0) o (Mes < 1) o (Mes > 12) o (Dia < 1) o (Dia > 31) a continuacion,
CalcDayOfWeek := -1 { Return -1 para indicar un error }
else
{ Hacer la Zeller & #39 s Congruencia de calculo como Zeller mismo }
{ descrito en 'Acta Mathematica' #7, Stockhold, 1887. }
begin
{ Primero separamos el año y el siglo figuras: }
Siglo := Año div 100
Año := Año MOD 100
{ Siguiente nos ajustar el mes de Marzo sigue siendo el mes #3, }
{ pero que enero y febrero son meses #13 #14, }
{ *pero del año anterior*: }
si Mes < 3, a continuacion,
begin
Inc(Mes 12)
si Año > 0, entonces
Dec(Año 1) { El año antes de 2000 }
else { 1999, no 20-1... }
begin
Año := 99
Dec(Siglo)
fin
fin
{ Aqui & #39 s Zeller & #39 s seminal de la magia negra: }
Titular := Dia { a Empezar Con el dia de mes }
Titular := Titular (((Mes 1) * 26) div 10) { Calc el incremento }
Titular := Titular de Año { Agregar en el año }
Titular := Titular (Año div 4) { Correcta Para los años bisiestos }
Titular := Titular (Siglo div 4) { Correcta Para los años del siglo }
Titular := Titular - del Siglo { NO & #39 T SABER por QUE lo HIZO! }
{***********************PARCHE de ALERTA!***************************}
Mientras que la Titular de la < 0 { Obtener valores negativos en }
Inc(Titular, 7) { territorio positivo antes de }
{ tomando el MOD... }
Titular := Titular MOD 7 { Dividir por 7, pero mantener el }
{ resto en lugar de los }
{ cociente }
{***********************PARCHE DE ALERTA!***************************}
{ Aqui se 'envuelve' el sabado en torno a ser el ultimo dia: }
si Aux = 0, entonces
Titular := 7
{ Zeller mantuvo el domingo = 1 origen de equipo chiquitito prefieren }
{ empezar todo de 0, asi que aqui & #39 s del siglo 20 parche: }
Dec(Titular)
CalcDayOfWeek := Titular { Return el producto final! }
fin
fin
El día de la semana
By Consejos Y Trucos
El día de la semana : Multi-millones de consejos para hacer su vida más fácil.