C++代码获取周几

#include <iostream>
#include <string>
#include <stdlib.h>
#include <sstream>

int month_to_day(int c)
{
    switch(c)
    {   
    case 11:c=334;break;
    case 10:c=304;break;
    case 9:c=273;break;
    case 8:c=243;break;
    case 7:c=212;break;
    case 6:c=181;break;
    case 5:c=151;break;
    case 4:c=120;break;
    case 3:c=90;break;
    case 2:c=59;break;
    case 1:c=31;break;
    default:break;
    }   
    return c;
}

std::string getWeek(std::string &sDDAT)
{
    int iDay = atoi(sDDAT.substr(6,2).c_str());
    int iMonth = atoi(sDDAT.substr(4,2).c_str());
    int iYear = atoi(sDDAT.substr(0,4).c_str());
    int a=iYear-1900,b=a/4,c=iMonth-1,d;//a表示过了几年,b表示a中有几年是闰年,
    //c表示过了几个月,d表示一共有多少天
    c=month_to_day(c);  //把月份转成天数
    if(a%4==0&&a!=0)  //判断输入的年份是不是闰年
    {   
        b=b-1;
        c=c+1;
        d=(a-b)*365+b*366+c;
    }
    else
    {
        d=(a-b)*365+b*366+c+iDay;
    }
    int iWeek = d%7;
    if (iWeek == 0)
    {
        iWeek = 7;
    }
    std::ostringstream ostr;
    ostr.str("");
    ostr << iWeek;
    std::string sWeek = ostr.str();
    ostr.str("");
    return sWeek;
}

int main()
{
    std::string str = "20190907";
    std::string w = getWeek(str);
    std::cout << w.c_str() << std::endl;
    return 0;
}

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值