第一种方法
基姆拉尔森计算公式
W = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) mod 7

基姆拉尔森计算公式
W = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) mod 7
http://baike.baidu.com/view/739374.htm#include<iostream>
using namespace std;void CaculateWeekDay(int y, int m, int d)
{if (m == 1 || m == 2) {m += 12;y--;}int iWeek = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;switch (iWeek){case 0: cout << "星期一" << endl; break;case 1: cout << "星期二" << endl; break;case 2: cout << "星期三" << endl; break;case 3: cout << "星期四" << endl; break;case 4: cout << "星期五" << endl; break;case 5: cout << "星期六" << endl; break;case 6: cout << "星期日" << endl; break;}
}
int main()
{int year, month, day;cout << "请输入年 月 日" << endl;cin >> year;cin >> month;cin >> day;CaculateWeekDay(year, month, day);system("pause");return 0;
}

第二种方法
C/C++ 根据年月日计算星期几——蔡勒公式篇
蔡勒公式 蔡勒(Zeller)公式:是一个计算星期的公式。
随便给一个日期,就能用这个公式推算出是星期几。
蔡勒公式如下:
W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1
或者是:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公式中的符号含义如下:
w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
c:世纪-1(前两位数)
y:年(后两位数)
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日 [ ]代表取整,即只要整数部分。
下面以中华人民共和国成立100周年纪念日那天(2049年10月1日)来计算是星期几,过程如下:
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=49+[49/4]+[20/4]-2×20+[26×(10+1)/10]+1-1
=49+[12.25]+5-40+[28.6]
=49+12+5-40+28
=54 (除以7余5)
即2049年10月1日(100周年国庆)是星期五。
再比如计算2013年3月7日,过程如下:
w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
=13+[13/4]+[20/4]-220+[26(3+1)/10]+7-1
=-3 (除以7余4,注意对负数的取模运算!)

int ReturnWeekDay( unsigned int iYear, unsigned int iMonth, unsigned int iDay )
{int iWeek = 0;unsigned int y = 0, c = 0, m = 0, d = 0;if ( iMonth == 1 || iMonth == 2 ){c = ( iYear - 1 ) / 100;y = ( iYear - 1 ) % 100;m = iMonth + 12;d = iDay;}else{c = iYear / 100;y = iYear % 100;m = iMonth;d = iDay;}iWeek = y + y / 4 + c / 4 - 2 * c + 26 * ( m + 1 ) / 10 + d - 1;    //蔡勒公式iWeek = iWeek >= 0 ? ( iWeek % 7 ) : ( iWeek % 7 + 7 );    //iWeek为负时取模if ( iWeek == 0 )    //星期日不作为一周的第一天{iWeek = 7;}return iWeek;
}

c++ 计算某个日期是星期几,判断某年某月一号是星期几相关推荐

  1. JS判断某年某月有多少天

    以前写网页的时候,经常碰到选择日期的问题,其实就是 判断某年某月有多少天.一般的做法是先判断是几月份,然后决定有多少天(一般用switch),如果是2月的话,还得判断选择的年份是不是闰年,再决定是28 ...

  2. 判断某年某月有多少天

    /*** 判断某年某月有多少天* 参数:y* year:年* month:月* 返回值为该月的天数* */ function getDaysInMonth(year, month) {var date ...

  3. JavaScript——运用JS做出当前12小时制的日期,其中包含(年、月、日、星期、小时、分钟、秒)计时的效果.

    如何运用JS做出当前日期还带有计时的效果呢? <style>#box{width: 500px;height: 70px;background-color: red;margin: 300 ...

  4. Python计算今年第n个周m是几月几号

    问题描述:计算指定年份的第n个周m是几月几号,例如2018年第40个周五是几月几号. 思考一下,然后到文末阅读参考代码: 1)在Python中,怎么知道特定的年月日是周几?反过来呢? 2)如果实在没有 ...

  5. C++switch语句 | 判断某年某月有几天

    C++多分支选择结构 switch语句是多分支选择语句,用来实现多分支选择结构,switcht的一般形式如下,和C语言基本上一样,只是输出语句不同. switch(表达式) {case 常量表达式1: ...

  6. 判断某年某月有多少天(C语言)

    从键盘输入某年某月(包括闰年),用switch语句编程输出该年的改月拥有的天数.要求考虑闰年以及输入月份不在合法范围内的情况.已知闰年的2月有29天,平年有28天. #include <stdi ...

  7. 算法设计——基姆拉尔森计算公式:计算几月几号是星期几

    基姆拉尔森计算公式 W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7 其中,W表示算出的星期的数字表示:0:星期日:1:星期一-- d表示日期,m表示月份,y表示年份 ...

  8. c语言求某年某月1日是星期几,蔡勒(Zeller)公式:根据日期推算是星期几

    Zeller's Congruence: w=y + [y/4] + [c/4] - 2c + [26(m+1)/10] + d - 1 公式中的符号含义如下: w:星期: w对7取模得:0-星期日, ...

  9. C#判断某年某月共有多少个周末,分别是哪几天

    注:本文中的周末指的是周六和周日双休 本代码用的是基姆拉尔森公式来判断某年某月某天是否为周末,关于这个公式,百度百科上有详细介绍,这里再赘述一下: 基姆拉尔森计算公式:W= (d+2*m+3*(m+1 ...

最新文章

  1. MySQL 空间数据库支持入门学习
  2. AbsoluteLayout 相框
  3. 数据结构简介以及抽象数据类型的实现
  4. 进阶面向对象——类的成员
  5. 架构之:软件架构漫谈
  6. IOS15使用Masonry和自动计算Cell的高度
  7. h.264视频文件封装
  8. Minio Docker 单机安装(二种模式) linux
  9. Java虚拟机------垃圾收集器
  10. 杭州师范大学计算机信息学院调剂,考研调剂信息:杭州师范大学信息科学与工程学院...
  11. win10屏蔽自动更新方法
  12. java学习之Eclipse开发工具
  13. 741. 斐波那契数列
  14. 苹果UDID泄露续:为什么UDID泄露会引起这么大反响?
  15. vue组件之间的数据通信
  16. 超详细的PS抠图方法
  17. 超详细的bat脚本常用命令及亲测示例
  18. 学习设计到底应该学习figma、sketch还是PS
  19. linux下搜索文件和文件夹
  20. webpack——module、chunk和bundle的区别

热门文章

  1. 电子信息处理课程设计-用blinker实现的arduino小车和ESP32桌面时钟
  2. 巴哈马证券监管机构提出加密代币销售规则
  3. html svg导出图片,将SVG保存为图片_唐霜的博客
  4. 查询其他系中比计算机科学某一学生年龄小的学生姓名和年龄.,带有ANY(SOME)或ALL谓词的子查询...
  5. MOOC-浙江大学-博弈论基础-学习笔记(八)
  6. GC 和 OOM 举例
  7. xp php mysql_Win XP下全新安装Apache2,PHP5,MYSQL5
  8. 什么是向前兼容和向后兼容?
  9. 鹿定制|Lu Couture|鹿定制·高级西装礼服私享定制品牌|芙蓉中路明城国际1425
  10. Android Studio 无线调试商米T1设备流程