33,028
社区成员
发帖
与我相关
我的任务
分享#include <iostream.h>
int weekofdate(int year,int month,int day)
{
int days = month > 2 ? -2:0;
days += month > 2 && ((year%4) == 0 && ((year%100) != 0 || (year%400) == 0)) ? 1 : 0;//今年是闰年且2月份之后了,把2月份当做30天计算,但是要减1,否则减2
year-- ;
days += year*365 + year/4 - year/100 + year/400;//总共已经过了多少个闰年
days += 30 * (month - 1) + (month/2);
days += (month == 9) ? 1 : 0; //9月份特殊,9月前有5个31天的,其他月前都最多month/2个31天的
return (days + day) % 7;//1年1月1日是星期一
}
int main()
{
int year,month,day,week;
cin>>year>>month>>day;
week = weekofdate(year,month,day);//用0到6表示星期日到星期六
switch(week)
{
case 0:
cout<<"星期日"<<endl;
break;
default :
cout<<"星期"<<week<<endl;
break;
}
return 0;
}Calendar.get(Calendar.DAY_OF_WEEK)#include <iostream.h>
int weekofdate(int year,int month,int day)
{
int days = month > 2 ? 0:2;
days += ((year%4) == 0 && ((year%100) != 0 || (year%400) == 0)) ? -1 : -2;//今年是闰年且2月份之后了,把2月份当做30天计算,但是要减1,否则减2
year-- ;
days += year*365 + year/4 - year/100 + year/400;//总共已经过了多少个闰年
days += 30 * (month - 1) + (month/2);
days += (month == 9) ? 1 : 0; //9月份特殊,9月前有5个31天的,其他月前都最多month/2个31天的
return (days + day) % 7;//1年1月1日是星期一
}
int main()
{
int year,month,day,week;
cin>>year>>month>>day;
week = weekofdate(year,month,day);//用0到6表示星期日到星期六
switch(week)
{
case 0:
cout<<"星期日"<<endl;
break;
default :
cout<<"星期"<<week<<endl;
break;
}
return 0;
}#include <iostream>
#include <ctime>
using namespace std;
int offsetDay(int year,int month,int day)
{
int i,days=0;
for(i=1;i<month;i++)
{
switch(i)
{
case 2:
days+=(year%4==0&&year%100!=0?29:28);
break;
case 4:
case 6:
case 9:
case 11:
days+=30;
break;
default:
days+=31;
}
}
return days+day-1;//从1月1日到1月1日的offsetDay是0
}
int main()
{
int i,baseDay=27,baseMonth=9,baseYear=2009,baseWeek=7;//2009年9月27日星期七
int inputYear,inputMonth,inputDay,week,dayGap;
cin>>inputYear>>inputMonth>>inputDay;
dayGap=0;
if(inputYear>=baseYear)
{
for(i=baseYear;i<inputYear;i++)
dayGap+=(i%4==0&&i%100!=0?366:365);
dayGap+=offsetDay(inputYear,inputMonth,inputDay)-offsetDay(baseYear,baseMonth,baseDay);
}
else
{
for(i=inputYear;i<baseYear;i++)
dayGap-=(i%4==0&&i%100!=0?366:365);
dayGap-=offsetDay(inputYear,inputMonth,inputDay)-offsetDay(baseYear,baseMonth,baseDay);
}
week=(baseWeek+dayGap)%7;
cout<<(week>0?week:7+week)<<endl;
system("pause");
return 0;
}