You are on page 1of 15

c 

 

     
   
Este artículo o sección necesita    
  que aparezcan en una   


  ,
como revistas especializadas, monografías, prensa diaria o páginas de Internet fidedignas.
Puedes añadirlas  o avisar al autor principal del artículo en su página de discusión pegando:
{{subst:Aviso referencias|Algoritmo para calcular el día de la semana}}
~~~~

El   

        tiene como finalidad saber el día de la
semana para una fecha dada tanto del pasado o el futuro. En realidad, hay un conjunto
numeroso de algoritmos para realizar este cálculo, entre ellos está el Algoritmo Doomsday,
aunque todos son variantes pequeñas entre ellos, de tal forma que empleando diferentes
conjuntos de reglas se obtiene el mismo resultado. Una aplicación típica de este algoritmo
es calcular el día de la semana en que nació una persona o que ocurrió un evento especial.

  
[ocultar]

x? G Introducción
x? ^ Conceptos útiles
o? ^.G Meses correspondientes
x? £ Procedimiento
x? º Ejemplo



[editar]
El fundamento de toda esta familia de algoritmos para calcular el día de la semana es:

G.? Enumerar los días de la semana comenzando por el cero hasta el seis de esta forma
podemos emplear aritmética módulo 7 para añadir el número de días transcurridos
desde el comienzo de un periodo.
^.? Buscar o calcular mediante una regla en qué día de la semana comenzó un siglo.
£.? Buscar o calcular en qué día de la semana comenzó un año dado.
º.? Buscar o calcular en qué día comienza un mes dado, sabiendo el año.


 [editar]
  
    [editar]
El concepto "meses correspondientes" se aplica a aquellos meses del calendario que
empiezan en el mismo día de la semana. Por ejemplo, septiembre y diciembre son
correspondientes ya que el G de septiembre cae en el mismo día de la semana que G de
diciembre. Los meses son correspondientes si el número de días entre ellos es divisible
entre 7. Por ejemplo febrero corresponde con marzo ya que febrero tiene ^ días, es decir,
un número divisible entre 7, y ^ días son exactamente cuatro semanas. Los meses se
corresponden del siguiente modo:

u  


x? Enero y octubre.
x? rebrero, marzo y noviembre.
x? Abril y julio.
x? ‰eptiembre y diciembre.
x? Mayo, junio y agosto no se corresponden con ningún mes.

u   

x? Enero, abril y julio.


x? rebrero y agosto.
x? Marzo y noviembre.
x? ‰eptiembre y diciembre.
x? Mayo, junio y octubre no se corresponden con ningún mes.

O
 [editar]
Para determinar el día de la semana de una fecha del calendario gregoriano, debemos seguir
el siguiente procedimiento:

G.? Calcular la cantidad de días transcurridos hasta la fecha.


^.? Calcular el módulo con respecto a 7.
£.? El valor obtenido será el día de la semana de la fecha.

Esto lo podemos expresar de la siguiente manera:

‰in embargo, en realidad no debemos calcular el total de días, sino únicamente los módulos
con respecto a 7. Entonces, nuestra expresión se reduce así:
Donde:

x?   día de la semana
x?   Año
x?   Días transcurridos hasta antes del primer día del mes
x?   Día
x?   Módulo
x? En todas las divisones solo se consideran las cifras enteras.

Además:

Tengamos en cuenta que debemos conocer el módulo correspondiente a cada "inicio" de


mes. Así, ‰i estamos buscando una fecha de julio, el módulo sería:

Crearemos entonces una tabla que contenga los módulos acumulados por mes.

   E r M A M J J A ‰ O N D

c   0 £ £ 6 G º 6 ^ 5 0 £ 5

c  0 £ º 0 ^ 5 0 £ 6 G º 6

Por último nuestro algoritmo quedaría así:

Donde:

  Módulo correspondiente al mes.

u  [editar]
Calcular el día de la semana para el ^5 de mayo de ^007:

x?
x?
x?
‰i el 0 corresponde al domingo, entonces 5 corresponde a viernes.

Obtenido de
"http://es.wikipedia.org/wiki/Algoritmo_para_calcular_el_d%C£%ADa_de_la_semana"
?

?
?



         
ëamos a ver en este post una forma para saber qué día de la semana fue cualquier fecha. El
algoritmo consiste en calcular ciertos coeficientes a partir de la fecha (día, mes y año) y
efectuar ciertos cálculos con ellos para quedarnos con un número entre 0 y 6. Después
sabiendo qué número es el que corresponde a cada día conseguiremos resolver el problema.
ëamos a explicar el método llevando a la vez un ejemplo: mi cumpleaños del año que
viene, G     , que de antemano os digo que es   :

u   El primer coeficiente que necesitamos, llamémosle c, lo conseguimos con el


siglo al que pertenece el año de la fecha siguiendo esta tabla:

G G ? GG? GG? ? GG? ?

? ? G? ? ?


?

En nuestro ejemplo obtenemos que c

c Tomamos los dos últimos dígitos del año en cuestión y a ese número de dos cifras
le sumamos un cuarto del mismo (despreciando los decimales). Eso nos proporciona el
segundo coeficiente, digamos ÿ.

En nuestro caso: 7/º   G75. Despreciamos los decimales y nos queda G. Como los dos
últimos dígitos son 07 tenemos que ÿ!.

"c  Éstos son los que cumplen que sus dos últimas cifras forman un
múltiplo de º (por ejemplo, G^ o ^00º) excepto los terminados en 00. Entre estos últimos
sólo son bisiestos los múltiplos de cuatrocientos (por ejemplo ^000). Nuestro tercer
coeficiente, Ô depende de ellos: si el año es bisiesto, y el mes es enero o febrero el
coeficiente será C   ±G. En cualquier otro caso C   0.

En nuestro ejemplo, como ^007 no es bisiesto tenemos que .

#  El cuarto coeficiente, ¦, nos lo da la siguiente tabla:

u ? ? ? ? ?  ? ? 


? 
? 
 ?  ? ?
*? ? ? ? ? ? ? G?
? *? ?
?

En nuestro ejemplo, como el mes es mayo, tenemos que ¦.

$¦  El quinto coeficiente, u, es simplemente el día en cuestión. En este caso u.

%c  Tomamos todos los coeficientes calculados y los sumamos. Y después
calculamos el resto módulo 7 del número que obtenemos. Eso lo podemos hacer restando 7
al resultado tantas veces como sea necesario hasta obtener un número entre 0 y 6 que
llamaremos Ë.

En nuestro ejemplo:

A+B+C+D+E 0+ +0+0+G 
±7 ^

Por tanto Ë

&Ë    La asignación de números a cada día de la semana es la siguiente:

-  ? 
 ?   ?   ?   ?  ?  ?

G? ? ?
? ? *? ?

Por tanto, como en nuestro ejemplo R   ^ tenemos que:

  '  & (  

como en realidad ocurre.

Espero que os haya parecido interesante.

ruente: Ese Primo

?
u  
         


u              
    
        
       
     
        

          u      
  
               
      
       

!              
 
   "#  "$%&




'()**'!)*!u()+u*



+       ,      
    !          -



(./0!0)0u1)2&30*



* -



4/./  "#

4!-56   5       -



u 
$
) 
7
8 
7
9 
$

:  
;
!
%
)  
"
(  
;

!
;
8 
&
*   
<
/   
<




)
   ,             
    
      ,   

             


 
     =  >)  
   ;%  ;     ="? > 

 5 5    ;6     &  
 5  5   ;   
   
7       )   
    
         
 7
      ?   +
5 5   %@     

/            
  
            
 A  -u  :   ! ) ! 8
  8  
)   6   B   6   >   
,  $ % " ; & < 7           
 

              9 
  ,
    !.%1%3



4)-/ ,     ,  u   ).%&

4u1)2&3-C               
,     &u    u 1%&2&3.;

*-',    /  %D$$ %DDD  $/  
"$$$ "$DD  7

+   ,   -



(."#0%0%&0;07.<%



u          
   #  ,   -

%-+ 

"-! 

;-!  

&-8  

<-E  

7-*

$-/  



u          <% #    "u  
 



'                 
   *   A 
    
       ,           
#       

)              / 7 
   
     "# #

+5 5      

u %& 
          $+     
) ;

@     
         
  
      -



(.70%0$0;07.%7

(      "= >

u            -   
              
     



)C)u*u6F)+F*)*



(  
            GGGGF  
  
        
   
       *-



F(uCE)+9
*
F(uCE)+9
*
F(uCE)+9
*

H DD
&
?$$I?DD
;
%7$$I%7DD
7

%$$I%DD
;
D$$IDDD
"
%#$$I%#DD
&

"$$I"DD
"
%$$$I%$DD
%
%?$$I%?DD
"

;$$I;DD
%
%%$$I%%DD
$
%D$$I%DDD
$

&$$I&DD
$
%"$$I%"DD
7
"$$$I"$DD
7

<$$I<DD
7
%;$$I%;DD
<
"%$$I"%DD
&

7$$I7DD
<
%&$$I%&DD
&
""$$I""DD
"

#$$I#DD
&
%<$$I& %<?"
;
";$$I";DD
$



%< %<?"I%<DD
$
"&$$I"&DD
7






      
  
   <%&
   %<?"   =         >
J( 
              
   KC    
   %#$$ %?$$ %D$$ 
"%$$ ""$$";$$     ,   &

)   A      -Lu
  
 %7 A  %"%"     (   M



/.%7  "

!.7

).%"  <

u1)2&3.;

*    -7

(.<0;070"07.""

C 1""2#3.%u       
?

You might also like