https://www.cnblogs.com/woxiaosade/p/11829060.html
https://blog.csdn.net/Dream_Weave/article/details/80487951
1. Année, mois, jour -> Semaine X
1. Kim Larson: w = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4-y / 100 + y / 400)% 7 // w: 0: semaine un .. .etc
int cal1(int y,int m,int d)
{
if(m==1||m==2)
m+=12,y--;
int w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
return ++w;
}
2. Formule de Zeiler: w = (y + y / 4 + c / 4-2 * c + 26 * (m + 1) / 10 + d-1 + 7)% 7 // w: 0: dimanche ... Etc., etc
int cal2(int y,int m,int d)
{
if(m==1||m==2)
m+=12,y--;
int c=y/100,ty=y%100;
int w=ty+ty/4+c/4-2*c+26*(m+1)/10+d-1;
return w%7==0?7:(w+7)%7;
}
Ps: Description du symbole de formule:
w: 0: dimanche ... et ainsi de suite (ce dernier +7 est dû au fait que les nombres négatifs sont considérés)
c: siècle-1 (les deux premiers chiffres de
y ) y: année (les deux derniers chiffres de y)
m: Mois (m> = 3 && m <= 14, c'est-à-dire dans la formule de Zeiler et la formule de Kim Larson, janvier et février d'une année doivent être calculés comme les 13e et 14e mois de l'année précédente, tels que : 1er janvier 2003 -> 13 janvier 2002)
d: jour
[]: Représente l'arrondi (ici est exactement l'arrondi vers le bas), c'est-à-dire aussi longtemps que la partie entière.