0
点赞
收藏
分享

微信扫一扫

ACM模板——日期类


一、年月日-->星期X

1、基姆拉尔森:w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7 // w:0:星期一...依此类推

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、蔡勒公式:w=(y+y/4+c/4-2*c+26*(m+1)/10+d-1+7)%7 // w:0:星期日...依此类推

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:公式符号说明:

w:0:星期日...依此类推(后面+7是因为考虑负数情况)

c:世纪-1(y前两位数)

y:年(y后两位数)

m:月(m>=3 && m<=14,即在蔡勒公式和基姆拉尔森公式中,某年的1、2月要看作上一年的13、14月来计算,如:2003年1月1日-->2002年的13月1日)

d:日

[]:代表取整(这里准确是向下取整),即只要整数部分。

二、待更新...


举报

相关推荐

0 条评论