Chinaunix

标题: 根据输入的日期,返回星期数(转载) [打印本页]

作者: jlwcb    时间: 2015-07-15 10:30
标题: 根据输入的日期,返回星期数(转载)
根据输入的日期,返回星期几,日期以1900年1月1日为起点,此后的日期都可以算,算1900年以前的日期可能会出现错误,可一次输入8位日期数,或以空格为间隔分别输入年、月、日
[C/C++]代码
  1. class Datetime{

  2. public:

  3. Datetime(int a,int b,int c):year(a),month(b),day(c){}

  4. Datetime(int a):year(int(a/10000)),month(int(a%10000/100)),day(int(a%100)){}

  5. int year_yun();

  6. int day_num();

  7. int week_day();

  8. public:

  9. int year;

  10. int month;

  11. int day;

  12. };

  13. int Datetime::year_yun()

  14. {

  15. int sum=0;

  16. for(int i=1900;i<year;i++)

  17. sum+=(i%4==0&&i%100!=0||i%400==0)?1:0;

  18. return sum;

  19. }

  20. int Datetime::day_num()

  21. {

  22. int temp;

  23. int day_num=0;

  24. int day_num_yun=year_yun()*366;

  25. int day_num_fyun=(year-1900-year_yun())*365;

  26. temp=(year%4==0&&year%100!=0||year%400==0)?1:0;

  27. switch(month){

  28. case 1:day_num=day;break;

  29. case 2:day_num=31+day;break;

  30. case 3:day_num=59+temp+day;break;

  31. case 4:day_num=90+temp+day;break;

  32. case 5:day_num=120+temp+day;break;

  33. case 6:day_num=151+temp+day;break;

  34. case 7:day_num=181+temp+day;break;

  35. case 8:day_num=212+temp+day;break;

  36. case 9:day_num=243+temp+day;break;

  37. case 10:day_num=273+temp+day;break;

  38. case 11:day_num=304+temp+day;break;

  39. case 12:day_num=334+temp+day;break;

  40. }

  41. return day_num_fyun+day_num_yun+day_num;

  42. }

  43. int Datetime::week_day()

  44. {

  45. return day_num()%7?day_num()%7:7;

  46. }

  47. int main()

  48. {

  49. int a,b,c;

  50. while(1){

  51. cin>>a;

  52. if(cin.get()=='\n')

  53. {

  54. Datetime t(a);

  55. cout<<"今天星期:"<<t.week_day()<<endl;

  56. }

  57. else

  58. {

  59. cin>>b>>c;

  60.   

  61. Datetime t1(a,b,c);

  62. cout<<"今天星期:"<<t1.week_day()<<endl;

  63. }

  64. }

  65. return 0;

  66. }
复制代码

作者: baopbird2005    时间: 2015-07-15 11:19
好东西 感谢分享
作者: cokeboL    时间: 2015-07-15 11:26
还以为是framly




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2