Classe de calcul de date

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.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_43871207/article/details/109321001
conseillé
Classement