第几个周五

//获得当月的信息
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;
//第几周  星期几
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值