//获得当月的信息
time_t currtime(time(NULL));
tm curr;
localtime_s(&curr, &currtime);
/*蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形):
W = Y + [Y/4] + [C/4] - 2C + [13(M+1)/5] + D - 1
C:世纪数减一(年的高两位数);
Y:年(年的低两位数);
M:月(M大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的
13、14月来计算,比如2005年1月1日要看作2004年的13月1日来计算);
D:日;
[]代表取整,即只要整数部分。
W:星期;W对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,
5-星期五,6-星期六
注意负数不能按习惯的余数的概念求余数,只能按数论中的余数的定义求余。为了
方便计算,我们可以给它加上一个7的整数倍,使它变为一个正数。
*/
//
int year= curr.tm_year+1900;
int month=curr.tm_mon+1;
int mday=1;//当月1号星期几
if ( month < 3 )
{
year -= 1;
month += 12;
}
int c = int(year / 100), y = year - 100 * c;
int w = int(c / 4) - 2*c +y +int(y/4) +(26 * (month + 1)/10 ) + mday - 1;
w = ( w % 7 + 7 ) % 7;
w=(w==0)?7:w;
int firstfridy=(w<=5)?(5-w+1):(9-w+4);
int last=firstfridy+14;
cout<<firstfridy<<endl;
cout<<last<<endl;
//上个月最后一天是星期几,这个月的基数就是几
//int cardinar=0;
//if(w<2)
// cardinar=w+6;
//else
// cardinar=w-1;
//求的第几周 星期几
//bool t1=(cardinar+curr.tm_mday)/7+1>=3; cout<<((cardinar+curr.tm_mday)/7)+1<<"周 ";
//bool t2=((cardinar+curr.tm_mday)%7)>=5;cout<<"周"<<((cardinar+curr.tm_mday)%7)<<endl;
//第几周 星期几
time_t currtime(time(NULL));
tm curr;
localtime_s(&curr, &currtime);
/*蔡勒(Zeller)公式(只适合于1582年10月15日之后的情形):
W = Y + [Y/4] + [C/4] - 2C + [13(M+1)/5] + D - 1
C:世纪数减一(年的高两位数);
Y:年(年的低两位数);
M:月(M大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的
13、14月来计算,比如2005年1月1日要看作2004年的13月1日来计算);
D:日;
[]代表取整,即只要整数部分。
W:星期;W对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,
5-星期五,6-星期六
注意负数不能按习惯的余数的概念求余数,只能按数论中的余数的定义求余。为了
方便计算,我们可以给它加上一个7的整数倍,使它变为一个正数。
*/
//
int year= curr.tm_year+1900;
int month=curr.tm_mon+1;
int mday=1;//当月1号星期几
if ( month < 3 )
{
year -= 1;
month += 12;
}
int c = int(year / 100), y = year - 100 * c;
int w = int(c / 4) - 2*c +y +int(y/4) +(26 * (month + 1)/10 ) + mday - 1;
w = ( w % 7 + 7 ) % 7;
w=(w==0)?7:w;
int firstfridy=(w<=5)?(5-w+1):(9-w+4);
int last=firstfridy+14;
cout<<firstfridy<<endl;
cout<<last<<endl;
//上个月最后一天是星期几,这个月的基数就是几
//int cardinar=0;
//if(w<2)
// cardinar=w+6;
//else
// cardinar=w-1;
//求的第几周 星期几
//bool t1=(cardinar+curr.tm_mday)/7+1>=3; cout<<((cardinar+curr.tm_mday)/7)+1<<"周 ";
//bool t2=((cardinar+curr.tm_mday)%7)>=5;cout<<"周"<<((cardinar+curr.tm_mday)%7)<<endl;
//第几周 星期几