免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1349 | 回复: 2
打印 上一主题 下一主题

[其他] 根据输入的日期,返回星期数(转载) [复制链接]

论坛徽章:
1
操作系统版块每日发帖之星
日期:2015-06-19 22:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 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. }
复制代码

论坛徽章:
80
20周年集字徽章-庆
日期:2020-10-28 14:09:1215-16赛季CBA联赛之北京
日期:2020-10-28 13:32:5315-16赛季CBA联赛之北控
日期:2020-10-28 13:32:4815-16赛季CBA联赛之天津
日期:2020-10-28 13:13:35黑曼巴
日期:2020-10-28 12:29:1520周年集字徽章-周	
日期:2020-10-31 15:10:0720周年集字徽章-20	
日期:2020-10-31 15:10:07ChinaUnix元老
日期:2015-09-29 11:56:3020周年集字徽章-年
日期:2020-10-28 14:14:56
2 [报告]
发表于 2015-07-15 11:19 |只看该作者
好东西 感谢分享

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
3 [报告]
发表于 2015-07-15 11:26 |只看该作者
还以为是framly
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP