#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;
}