c++ 计算某个日期是星期几,判断某年某月一号是星期几
第一种方法
基姆拉尔森计算公式
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++ 计算某个日期是星期几,判断某年某月一号是星期几相关推荐
- JS判断某年某月有多少天
以前写网页的时候,经常碰到选择日期的问题,其实就是 判断某年某月有多少天.一般的做法是先判断是几月份,然后决定有多少天(一般用switch),如果是2月的话,还得判断选择的年份是不是闰年,再决定是28 ...
- 判断某年某月有多少天
/*** 判断某年某月有多少天* 参数:y* year:年* month:月* 返回值为该月的天数* */ function getDaysInMonth(year, month) {var date ...
- JavaScript——运用JS做出当前12小时制的日期,其中包含(年、月、日、星期、小时、分钟、秒)计时的效果.
如何运用JS做出当前日期还带有计时的效果呢? <style>#box{width: 500px;height: 70px;background-color: red;margin: 300 ...
- Python计算今年第n个周m是几月几号
问题描述:计算指定年份的第n个周m是几月几号,例如2018年第40个周五是几月几号. 思考一下,然后到文末阅读参考代码: 1)在Python中,怎么知道特定的年月日是周几?反过来呢? 2)如果实在没有 ...
- C++switch语句 | 判断某年某月有几天
C++多分支选择结构 switch语句是多分支选择语句,用来实现多分支选择结构,switcht的一般形式如下,和C语言基本上一样,只是输出语句不同. switch(表达式) {case 常量表达式1: ...
- 判断某年某月有多少天(C语言)
从键盘输入某年某月(包括闰年),用switch语句编程输出该年的改月拥有的天数.要求考虑闰年以及输入月份不在合法范围内的情况.已知闰年的2月有29天,平年有28天. #include <stdi ...
- 算法设计——基姆拉尔森计算公式:计算几月几号是星期几
基姆拉尔森计算公式 W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7 其中,W表示算出的星期的数字表示:0:星期日:1:星期一-- d表示日期,m表示月份,y表示年份 ...
- c语言求某年某月1日是星期几,蔡勒(Zeller)公式:根据日期推算是星期几
Zeller's Congruence: w=y + [y/4] + [c/4] - 2c + [26(m+1)/10] + d - 1 公式中的符号含义如下: w:星期: w对7取模得:0-星期日, ...
- C#判断某年某月共有多少个周末,分别是哪几天
注:本文中的周末指的是周六和周日双休 本代码用的是基姆拉尔森公式来判断某年某月某天是否为周末,关于这个公式,百度百科上有详细介绍,这里再赘述一下: 基姆拉尔森计算公式:W= (d+2*m+3*(m+1 ...
最新文章
- MySQL 空间数据库支持入门学习
- AbsoluteLayout 相框
- 数据结构简介以及抽象数据类型的实现
- 进阶面向对象——类的成员
- 架构之:软件架构漫谈
- IOS15使用Masonry和自动计算Cell的高度
- h.264视频文件封装
- Minio Docker 单机安装(二种模式) linux
- Java虚拟机------垃圾收集器
- 杭州师范大学计算机信息学院调剂,考研调剂信息:杭州师范大学信息科学与工程学院...
- win10屏蔽自动更新方法
- java学习之Eclipse开发工具
- 741. 斐波那契数列
- 苹果UDID泄露续:为什么UDID泄露会引起这么大反响?
- vue组件之间的数据通信
- 超详细的PS抠图方法
- 超详细的bat脚本常用命令及亲测示例
- 学习设计到底应该学习figma、sketch还是PS
- linux下搜索文件和文件夹
- webpack——module、chunk和bundle的区别
热门文章
- 电子信息处理课程设计-用blinker实现的arduino小车和ESP32桌面时钟
- 巴哈马证券监管机构提出加密代币销售规则
- html svg导出图片,将SVG保存为图片_唐霜的博客
- 查询其他系中比计算机科学某一学生年龄小的学生姓名和年龄.,带有ANY(SOME)或ALL谓词的子查询...
- MOOC-浙江大学-博弈论基础-学习笔记(八)
- GC 和 OOM 举例
- xp php mysql_Win XP下全新安装Apache2,PHP5,MYSQL5
- 什么是向前兼容和向后兼容?
- 鹿定制|Lu Couture|鹿定制·高级西装礼服私享定制品牌|芙蓉中路明城国际1425
- Android Studio 无线调试商米T1设备流程